【问题标题】:PHP in Apache: putenv has no effectApache中的PHP:putenv没有效果
【发布时间】:2016-12-16 22:03:41
【问题描述】:

在 Apache 中运行的 PHP:

if (! putenv ('PATH=/my/path:'.getenv('PATH')))
    print 'putenv failed';
else
    print getenv("PATH");

这打印/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin,我指定的路径不存在。为什么不呢?

【问题讨论】:

  • 您是否真的在与putenv() 相同的脚本中执行getenv()?然后它应该工作。如果您希望更改在不同脚本之间持续存在,那不是环境变量的工作方式。环境由子进程继承,它们不会传播回父进程。
  • 肯定在同一个脚本中。连续的行,甚至。
  • 我无法复制它。我使用的是 NGINX,而不是 Apache,但我认为一旦你在 PHP 中,这应该不会有所作为。

标签: php environment-variables


【解决方案1】:

在 Apache 上,你需要使用apache_setenv():

apache_setenv('PATH', '/my/path:' . getenv('PATH'));

参考:http://php.net/manual/en/function.apache-setenv.php

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-10-06
    • 2018-01-14
    • 1970-01-01
    • 2017-08-18
    • 1970-01-01
    • 1970-01-01
    • 2012-10-30
    • 2018-05-21
    相关资源
    最近更新 更多