我在PHP中有一个脚本,用getenv打印在/ etc / environment中设置的环境变量。
当我手动执行它时它工作正常,但是当由主管执行时,它不起作用。
我不想手动将此环境变量放在supervisor配置文件中,我希望它能正确读取/ etc / environment。
有任何帮助吗?提前致谢
答案 0 :(得分:6)
正如在supervisord配置文件文档中所述: supervisord config documentation 在部分环境中:
请注意,子进程将继承用于启动“supervisord”的shell的环境变量,除了在此处重写的那些变量。
我认为你使用systemd启动supervisord。 在这种情况下,您可以检查您的supervisord.service并在服务部分添加:
EnvironmentFile=/etc/environment
执行systemctl后台驻留程序重新加载和systemctl重启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,因为我没有在我的开发机器中安装主管,但它是相同的
答案 1 :(得分:0)
getenv获取环境变量的值,它不读取文件中的值。如果没有为您的主管会话设置环境变量,那么getenv如何检索该值?
在会话中输入“set”命令。该命令的输出是什么? 在您的主管会话中,输入'set'命令?什么是输出?
您确定会话的环境变量是通过/ etc / environment设置的吗?