MAMP:环境变量在 envvars 和运行时之间 deleted/replaced
MAMP: Environment variables being deleted/replaced between envvars and runtime
使用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
是 运行 和我 运行 我自己的代码之间发生了一些事情。
这里的罪魁祸首最终是 FastCGI。默认情况下,它会清除 PHP 脚本中的所有环境变量。我猜是安全功能。
使用 MAMP,无法在全球范围内关闭 clear_env
设置。但是如果你编辑合适的 /Applications/MAMP/fcgi-bin/phpX.Y.Z.fcgi
文件,你可以像这样添加一行:
export PATH='/my/unique/custom/path'
...你在做生意。
确保在文件中以 exec
.
开头的最后一行 上方 添加该行
使用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
是 运行 和我 运行 我自己的代码之间发生了一些事情。
这里的罪魁祸首最终是 FastCGI。默认情况下,它会清除 PHP 脚本中的所有环境变量。我猜是安全功能。
使用 MAMP,无法在全球范围内关闭 clear_env
设置。但是如果你编辑合适的 /Applications/MAMP/fcgi-bin/phpX.Y.Z.fcgi
文件,你可以像这样添加一行:
export PATH='/my/unique/custom/path'
...你在做生意。
确保在文件中以 exec
.