【发布时间】:2018-04-15 11:11:16
【问题描述】:
我有一个 PHP 脚本,它使用 getenv 打印 /etc/environment 中设置的环境变量。
当我手动执行时它可以正常工作,但是当我由主管执行时,它不起作用。
我不想手动将此环境变量放在主管 conf 文件中,我希望它能够正确读取 /etc/environment。
有什么帮助吗?提前致谢
【问题讨论】:
标签: php environment supervisord getenv
我有一个 PHP 脚本,它使用 getenv 打印 /etc/environment 中设置的环境变量。
当我手动执行时它可以正常工作,但是当我由主管执行时,它不起作用。
我不想手动将此环境变量放在主管 conf 文件中,我希望它能够正确读取 /etc/environment。
有什么帮助吗?提前致谢
【问题讨论】:
标签: php environment supervisord getenv
正如在 supervisord 配置文件文档中所说: supervisord config documentation 在部分环境中:
请注意,子进程将继承用于启动“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是因为我的dev机器上没有安装supervisor,但是都一样
【讨论】:
getenv 获取环境变量的值,它不会从文件中读取值。如果没有为您的主管会话设置环境变量,那么 getenv 如何检索该值?
在您的会话中,输入“设置”命令。该命令的输出是什么? 在您的主管的会话中,输入“设置”命令?输出是什么?
您确定会话的环境变量是通过 /etc/environment 设置的吗?
【讨论】: