将环境变量传递给 PHP CLI 和 FPM

将环境变量传递给 PHP CLI 和 FPM

我想在我的 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)来管理您的配置文件。这样,您就可以轻松地在所有所需位置之间同步您的环境变量列表。如果您需要更多相关信息,请告诉我。

相关内容