morrislaptop/phpdotenv-safe

从 .env 文件中加载环境变量,并确保它们全部存在

v0.0.1 2017-07-28 13:55 UTC

This package is auto-updated.

Last update: 2024-08-26 04:06:33 UTC


README

用于替换 vlucas/phpdotenv 的工具,但在读取 .env 文件后确保所有必要的环境变量都已定义。这些需要的变量从 .env.example 文件中读取,该文件应与您的项目一起提交。

本项目深受 dotenv-safe 的启发。

Build Status

安装

composer require morrislaptop/phpdotenv-safe

示例

# .env.example, committed to repo
SECRET=
TOKEN=
KEY=
# .env, private
SECRET=topsecret
TOKEN=
$dotenv = new DotenvSafe\DotenvSafe(__DIR__);
$dotenv->load();

由于提供的 .env 文件没有包含 .env.example 中定义的所有变量,因此会抛出异常

PHP Fatal error:  Uncaught Dotenv\Exception\ValidationException: One or more environment variables failed assertions: KEY is missing.

并非所有变量都必须在 .env 中定义,它们可以从外部提供。例如,以下方式可行

KEY=xyz php index.php

与流行框架的用法

Laravel

Laravel 不容易替换其现有的 Dotenv 实例(vlucas/phpdotenv),但您可以在应用启动时使用 DotenvSafe 手动验证环境。

只需将以下代码添加到您的 AppServiceProvider->register 方法中(您可以在 app/providers/AppServiceProvider.php 中找到该方法)

  if (!$this->app->configurationIsCached()) {
      $dotenv = new DotenvSafe\DotenvSafe($this->app->environmentPath(), $this->app->environmentFile());
      $dotenv->check();
  }

Lumen

bootstrap/app.php 在您的应用启动时运行,并使用 Dotenv\Dotenv 加载环境。您可以轻松将其替换为使用 DotenvSafe\DotenvSafe。您只需要将以下代码替换为:

(new Dotenv\Dotenv(__DIR__.'/../'))->load();

(new DotenvSafe\DotenvSafe(__DIR__.'/../'))->load();