morrislaptop / phpdotenv-safe
从 .env 文件中加载环境变量,并确保它们全部存在
v0.0.1
2017-07-28 13:55 UTC
Requires
- vlucas/phpdotenv: ^2.4
Requires (Dev)
- phpunit/phpunit: ^6.2
This package is auto-updated.
Last update: 2024-08-26 04:06:33 UTC
README
用于替换 vlucas/phpdotenv
的工具,但在读取 .env 文件后确保所有必要的环境变量都已定义。这些需要的变量从 .env.example
文件中读取,该文件应与您的项目一起提交。
本项目深受 dotenv-safe 的启发。
安装
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();