主管未使用 /etc/environment

Supervisor not using /etc/environment

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

我手动执行的时候没问题,但是当supervisor执行的时候就不行了

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

有什么帮助吗?提前致谢

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

在您的会话中,输入 'set' 命令。该命令的输出是什么? 在您主管的会话中,输入 'set' 命令?输出是什么?

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

正如 supervisord 配置文件文档中所说: supervisord config documentation 在分区环境中:

Note that the subprocess will inherit the environment variables of the shell used to start “supervisord” except for the ones overridden here.

我假设您使用 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因为我的dev机器上没有安装supervisor,但是一样