PHP system()如何导出PATH

时间:2011-02-15 09:55:04

标签: php export system

我想在php脚本执行期间更改默认系统$ PATH var,但由于某种原因失败。

我尝试以下方法:

<?php
$lastline = system('export PATH=$PATH:/customBin;',$return) OR die("why do i die all the time");
echo $lastline;
?>

但它显然一直在死。 (试过RHEL和Debian linux发行版,php版本5.3.xx,其他系统命令工作正常(cat,ls等)这些都不起作用:export PATH=$PATH:/customBin; OR export PATH=$PATH:/customBin: OR {{1} },所有这些都在shell中工作..)

感谢任何帮助。感谢。

编辑:以上代码错误,解决方法是使用export PATH=/customBin

3 个答案:

答案 0 :(得分:3)

系统的return value不是返回参数)是命令输出的最后一行,如果失败则是布尔FALSE。在你的情况下,它可能成功(你的$ return变量中有int 0成功退出)并且没有返回任何内容(可能是空字符串),在你的或语句中评估为false并且执行死亡。如果要检查导出是否成功,请尝试

system('export PATH=$PATH:/customBin;', $return);
$return === 0 OR die('...');

或者如果你想使用系统的失败处理程序:

(system('export PATH=$PATH:/customBin;') !== FALSE) or die('...');

尚未对此进行测试,结果可能会有所不同。

答案 1 :(得分:2)

使用putenv从PHP更改环境变量可能会更好。只需用getenv获取当前值,添加你喜欢的任何内容,最后调用putenv来改变值。

答案 2 :(得分:1)

使用system的方法是创建一个新的shell环境,在其中设置PATH,然后离开它。

此外,您的成功检查已被破坏。该调用返回一个空字符串,然后无法通过条件检查。

据我所知,你无法操纵调用 php 的环境。