【问题标题】:Supervisor not using /etc/environment主管不使用 /etc/environment
【发布时间】:2018-04-15 11:11:16
【问题描述】:

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

当我手动执行时它可以正常工作,但是当我由主管执行时,它不起作用。

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

有什么帮助吗?提前致谢

【问题讨论】:

    标签: php environment supervisord getenv


    【解决方案1】:

    正如在 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,但是都一样

    【讨论】:

      【解决方案2】:

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

      在您的会话中,输入“设置”命令。该命令的输出是什么? 在您的主管的会话中,输入“设置”命令?输出是什么?

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

      【讨论】:

      • 环境变量由 /etc/environment 设置为 @olibiaz 链接
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-10-06
      • 2012-12-26
      • 1970-01-01
      • 2017-02-04
      • 2015-07-09
      • 1970-01-01
      相关资源
      最近更新 更多