环境变量是操作系统中的键值对,PHP程序可读取用于配置。通过Web服务器、PHP-FPM或.env文件(推荐开发)设置,能提升安全性与灵活性。生产环境应使用系统级变量并限制权限,避免敏感信息泄露。
配置PHP环境变量不仅能提升项目灵活性,还能有效管理敏感信息,比如数据库密码、API密钥等。正确设置环境变量可以避免将机密信息硬编码在代码中,提高应用的安全性和可维护性。
环境变量是运行时存在于操作系统中的键值对,PHP程序可以在启动时读取这些值。它们常用于区分开发、测试和生产环境的配置,比如开启调试模式或指定日志路径。
根据你的部署方式,有多种方法可以设置环境变量:
1. Web服务器配置(Apache / Nginx)Apache(使用 .htaccess 或虚拟主机配置)
在 .htaccess 或 httpd.conf 中添加:
SetEnv DATABASE_URL "mysql:host=localhost;dbname=myapp" SetEnv APP_DEBUG "true"
Nginx(配合 PHP-FPM)
在 Nginx 配置文件中加入:
fastcgi_param DATABASE_URL "mysql:host=localhost;dbname=myapp"; fastcgi_param APP_DEBUG "true";
然后重启 Nginx 服务生效。
2. PHP-FPM 配置文件编辑 www.conf(通常位于 /etc/php/{版本}/fpm/pool.d/www.conf):
env[DATABASE_URL] = mysql:host=localhost;dbname=myapp env[APP_DEBUG] = true
修改后需重启 PHP-FPM 服务。
3. 使用 .env 文件(推荐开发环境)虽然操作系统不直接支持 .env 文件,但可通过 PHP 库如 vlucas/phpdotenv 实现。
安装:
composer require vlucas/phpdotenv
在入口文件(如 index.php)中加载:
$dotenv = Dotenv\Dotenv::createImmutable(__DIR__); $dotenv->load();
创建 .env 文件:
DATABASE_HOST=localhost DATABASE_NAME=myapp API_KEY=your_secret_key
之后在代码中通过 $_ENV['DATABASE_HOST'] 或 getenv('DATABASE_HOST') 获取值。
保护敏感数据是配置环境变量的重要目的之一。
.gitignore 中添加 .env,防止密钥泄露。.env.development、.env.production,按需加载。.env 更安全,避免文件被意外读取。chmod 600 .env。
避免在错误信息中暴露变量:关闭调试模式,防止 phpinfo() 泄露配置。基本上就这些。合理使用环境变量能让PHP项目更安全、更易部署。关键是把配置和代码分离,尤其别把密码写进代码里。