MAMP:在envvars和运行时之间删除/替换环境变量

时间:2016-04-02 19:17:21

标签: php apache path environment-variables mamp

使用MAMP + MAMP Pro 3.5进行本地开发。使用envvars文件,我提供自己的PATH,这与任何其他用户或目的的PATH不同。让我们假装它是/my/unique/custom/path

我将以下文件放在我的本地开发网站上:

<ol>
    <li><?php print $_SERVER['PATH']; ?></li>
    <li><?php print $_ENV['PATH']; ?></li>
    <li><?php print exec('echo $PATH'); ?></li>
</ol>

这就是结果:

  
      
  1. /我的/独特/定制/路径
  2.   
  3. /我的/独特/定制/路径
  4.   
  5. 的/ usr / GNU / bin中:在/ usr / local / bin中:/ bin中:在/ usr / bin中:
  6.   

因此,PHP认为PATH环境变量应该是我的,但不知何故它不是实际用于运行命令的那个。

可能导致这种情况的原因是什么?显然#3 PATH是bash的默认路径,如果你没有设置,我想?什么可能导致它被删除或从未设置,因为PHP正确看到它?

更新1:

正在运行print_r(shell_exec('env'))让我这样,仅此而已:

__CF_USER_TEXT_ENCODING=0x1F5:0x0:0x0
PHP_FCGI_CHILDREN=4
PWD=/path/to/website/files
SHLVL=1
PHP_FCGI_MAX_REQUESTS=200
_=/usr/bin/env  

非常裸露。好像$ _变量是一个很大的线索,但我还不知道是什么。

更新2:

好的,结果是裸露的环境是正常的。这就是您首先在envvars中设置环境变量的原因。但envvars显然正在发挥作用,否则该路径不会出现在$_SERVER中。因此,在envvars运行的时间和运行自己的代码的时间之间发生了一些事情。

1 个答案:

答案 0 :(得分:1)

罪魁祸首最终成为FastCGI。默认情况下,它会清除PHP脚本中的所有环境变量。安全功能,我想。

使用MAMP,无法在全球范围内关闭clear_env设置。但是,如果您编辑相应的/Applications/MAMP/fcgi-bin/phpX.Y.Z.fcgi文件,则可以添加如下所示的行:

export PATH='/my/unique/custom/path'

......而且你正在做生意。

确保在上面添加上面的exec开头的文件中的最后一行。