主管未使用 /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,但是一样
我在 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,但是一样