【问题标题】:PHP missing environment variablesPHP缺少环境变量
【发布时间】:2016-08-11 00:04:17
【问题描述】:

我正在尝试在/etc/environment 中设置一些全局环境变量,PHP 应该可以使用这些变量。但是我不知道如何让 PHP 在通过 php-fpm 运行时识别变量,但在通过 php-cli 运行时可以。

/etc/php-fpm.conf:

clear_env = no

/etc/php-fpm.d/www.conf:

clear_env = no

/etc/environment:

FOO=42

FOO 变量在我的 shell 中可用:

echo $FOO                             # prints 42

在 CLI 中运行时,PHP 可以使用 FOO 变量:

echo getenv('FOO') . "\n";            // prints 42

但是通过 FPM 运行时,PHP 无法使用 FOO 变量:

echo getenv("FOO") . "\n";            // prints nothing
echo $_ENV["FOO"] . "\n";             // prints nothing
echo $_SERVER["FOO"] . "\n";          // prints nothing

如何让php-fpm不清除环境?

【问题讨论】:

  • ...之后你重启了php-fpm吗?
  • 是的。我试图找到可以验证 clear_env 设置的地方(例如使用 phpinfo()),但我没有运气。
  • serverfault.com 可能是一个更好的询问地点。那里有一个 php-fpm 标签,但这里没有。
  • @Barmar 取决于解决方案的具体内容,它实际上可能是任一站点的主题。
  • @bwoebi 这不是倒退吗?提问的正确位置取决于答案是什么?但如果你不知道答案,你怎么知道去哪里问?

标签: php environment-variables


【解决方案1】:

在对 systemd 有更多经验之后,我发现了一个变通的解决方案。

打开php7.2-fpm服务的选项文件

systemctl edit php7.2-fpm

添加以下内容

[Service]
EnvironmentFile=/etc/environment

重启服务

systemctl restart php7.2-fpm

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-01-05
    • 1970-01-01
    • 2020-04-11
    • 2021-12-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多