【问题标题】:MAMP: Environment variables being deleted/replaced between envvars and runtimeMAMP:环境变量在环境变量和运行时之间被删除/替换
【发布时间】:2016-07-22 12:30:12
【问题描述】:

使用 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. /my/unique/custom/path
  2. /my/unique/custom/path
  3. /usr/gnu/bin:/usr/local/bin:/bin:/usr/bin:.

所以 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 和运行我自己的代码之间发生了一些事情。

【问题讨论】:

    标签: php apache path environment-variables mamp


    【解决方案1】:

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

    使用 MAMP,无法在全局范围内关闭 clear_env 设置。但是如果你编辑适当的/Applications/MAMP/fcgi-bin/phpX.Y.Z.fcgi 文件,你可以像这样添加一行:

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

    ...你在做生意。

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

    【讨论】:

      猜你喜欢
      • 2018-04-27
      • 1970-01-01
      • 1970-01-01
      • 2012-06-30
      • 2021-04-26
      • 1970-01-01
      • 2021-04-28
      • 2017-08-31
      • 2022-07-28
      相关资源
      最近更新 更多