我在 PHP 中有一个脚本,它使用 getenv 打印在 /etc/environment 中设置的环境变量。
当我手动执行它时它工作正常,但是当由主管执行时,它不起作用。
我不想手动将此环境变量放在主管 conf 文件中,我希望它能够正确读取 /etc/environment。
有什么帮助吗?提前致谢
我在 PHP 中有一个脚本,它使用 getenv 打印在 /etc/environment 中设置的环境变量。
当我手动执行它时它工作正常,但是当由主管执行时,它不起作用。
我不想手动将此环境变量放在主管 conf 文件中,我希望它能够正确读取 /etc/environment。
有什么帮助吗?提前致谢
正如它在 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,因为我的开发机器上没有安装主管,但它是一样的
getenv 获取环境变量的值,它不会从文件中读取值。如果没有为您的主管会话设置环境变量,那么 getenv 如何检索该值?
在您的会话中,输入“设置”命令。该命令的输出是什么?在您的主管的会话中,输入“设置”命令?输出是什么?
您确定会话的环境变量是通过 /etc/environment 设置的吗?