什么是 phpdotenv?
phpdotenv 是一个流行的 PHP 库,用于通过环境变量管理应用程序配置。它允许从 .env 文件加载设置到 $_ENV 数组和全局变量 getenv() 中,从而简化配置与代码的分离。该库受 Ruby 的 dotenv 库启发,广泛应用于现代 PHP 框架(如 Laravel、Symfony)。
为什么需要 phpdotenv?
在开发应用程序时,通常需要将敏感数据(如数据库密码、API 密钥)与代码分开存储。phpdotenv 解决了这个问题:您创建一个 .env 文件,该文件不会进入代码仓库(添加到 .gitignore),而库会将其加载到环境中。这确保了安全性、灵活性(针对开发/预发布/生产环境的不同配置),并符合 12-factor app 原则。
安装 phpdotenv
通过 Composer 安装该库:
composer require vlucas/phpdotenv请确保您已安装 Composer 和 PHP 7.1 或更高版本。
主要功能
- 加载 .env 文件 — 解析键=值对,支持注释(#)和空行。
- 必需变量 — 使用
required()检查必要键是否存在。 - 类型转换 — 自动将字符串转换为类型(布尔值、整数、null)。
- 安全性 — 转义特殊字符,支持引号。
- 不可变性 — 防止覆盖现有的环境变量。
PHP 代码示例
require 'vendor/autoload.php';
use Dotenv\\Dotenv;
// 从根目录加载 .env 文件$dotenv = Dotenv::createImmutable(__DIR__);$dotenv->load();
// 现在可以通过 getenv() 访问变量$dbHost = getenv('DB_HOST');$dbName = getenv('DB_NAME');
// 或者通过 $_ENVecho $_ENV['APP_ENV']; // 'local'
// 检查必需变量$dotenv->required(['DB_HOST', 'DB_NAME']);
// .env 文件示例:// DB_HOST=localhost// DB_NAME=test// APP_ENV=local何时使用 phpdotenv
该库非常适合以下场景:
- PHP 网页应用程序(Laravel、Symfony、Slim)。
- CLI 脚本和微服务。
- 需要快速更改配置而无需修改代码的项目。
- 团队开发 — 每个开发者可以拥有自己的
.env文件。 - CI/CD 流水线 — 变量通过服务器环境设置,而非通过文件。
重要提示: 切勿将 .env 文件提交到代码仓库。请创建一个 .env.example 文件作为模板供同事使用。