我想在我的 PHP 应用程序中使用环境变量(包括 CLI 和 FPM)。我所做的是:
- 导出一些变量
/etc/environment
。 - 将两者
php.ini
(CLI 和 FPM) 都配置为variables_order = "EGPCS"
。 www.conf
配置FPMclear_env = no
我期望环境变量在 CLI 和 FPM 应用程序中都可用。事实上,这仅适用于 CLI。FPM$_ENV
不包含这些环境变量。
我注意到可以定义环境变量,www.conf
但这很不方便,因为我必须从中复制粘贴所有变量/etc/environment
并始终保持两个文件同步。
问题是:是否可以将所有环境变量直接传递给 PHP-FPM 应用程序,而无需复制粘贴它们www.conf
?
答案1
从文档:
默认情况下,nginx 会删除从其父进程继承的除 TZ 变量之外的所有环境变量。
正如您所提到的,您已尝试在 fastcgi 配置中设置它们,我认为这是您在这种情况下可以做的最好的事情。为了其他人的利益,可以这样做:
location ~ \.php$ {
# ...
fastcgi_param APPLICATION_ENV "production";
fastcgi_param MY_OTHER_ENV "things";
include fastcgi_params;
# ...
}
我理解对“复制粘贴”的厌恶,并同意!您应该考虑使用配置管理工具(如 Puppet、SaltStack、Ansible)来管理您的配置文件。这样,您就可以轻松地在所有所需位置之间同步您的环境变量列表。如果您需要更多相关信息,请告诉我。