如何在PHP中正确设置PATH

时间:2017-05-17 12:20:39

标签: php environment-variables fpm

我试图在PHP中设置PATH环境变量并遇到一些意外行为:

var_dump(getenv('PATH'));
system('echo $PATH');
system('which true 2>&1');
system('PATH="$PATH" which true 2>&1');

结果

string(23) "/usr/local/bin:/usr/bin"
/usr/local/bin:/usr/bin
which: no true in ((null))
/usr/bin/true

所选的可执行文件也反映了这一点,这些可执行文件来自/usr/bin而不是/usr/local/bin

我的目标是(显然)更改脚本期间调用的某些可执行文件的路径。但我既不能直接更改我想要更改其路径的可执行文件的路径,因为它是由某些二进制文件间接调用的。我也不能简单地使用PATH="$PATH"变体而无需修补外部库。

因为明显的解决方法并不适用,而且因为我觉得这很奇怪,我想解释为什么会发生这种情况以及如何(或者如果)可以设置PATH的方式传递给systemexec来电。

脚本是通过php-fpm运行的,如果感兴趣的话。

0 个答案:

没有答案