【发布时间】: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>
结果如下:
- /my/unique/custom/path
- /my/unique/custom/path
- /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