1

我在 PHP 中有一个脚本,它使用 getenv 打印在 /etc/environment 中设置的环境变量。

当我手动执行它时它工作正常,但是当由主管执行时,它不起作用。

我不想手动将此环境变量放在主管 conf 文件中,我希望它能够正确读取 /etc/environment。

有什么帮助吗?提前致谢

4

2 回答 2

12

正如它在 supervisord 配置文件文档中所说: supervisord 配置文档 在部分环境中:

请注意,子进程将继承用于启动“supervisord”的 shell 的环境变量,除了这里被覆盖的那些。

我假设您使用 systemd 启动 supervisord。在这种情况下,您可以检查您的 supervisord.service 并在“服务”部分添加:

EnvironmentFile=/etc/environment

在做了一个 systemctl daemon-reload 和 systemctl restart supervisord 我想它应该可以工作

您可以使用以下命令检查您的 supervisord.service 文件在哪里:

 systemctl status docker
 docker.service - Docker Application Container Engine
    Loaded: loaded (/usr/lib/systemd/system/docker.service; enabled; vendor preset: disabled)

我使用了 docker,因为我的开发机器上没有安装主管,但它是一样的

于 2017-11-10T09:33:04.977 回答
0

getenv 获取环境变量的值,它不会从文件中读取值。如果没有为您的主管会话设置环境变量,那么 getenv 如何检索该值?

在您的会话中,输入“设置”命令。该命令的输出是什么?在您的主管的会话中,输入“设置”命令?输出是什么?

您确定会话的环境变量是通过 /etc/environment 设置的吗?

于 2017-11-02T19:59:37.033 回答