我尝试使用以下代码在使用PATH
之前临时更改exec()
。
$s1 = getenv ('PATH');
putenv('PATH=c:\bins');
$s2 = getenv ('PATH');
putenv('PATH='.$s1);
$s3 = getenv ('PATH');
var_dump($s1);
var_dump($s2);
var_dump($s3);
脚本第一次运行时,一切都按预期工作。这是输出:
string 'C:\Program Files (x86)\'... (length=1400)
string 'c:\bins' (length=7)
string 'C:\Program Files (x86)\'... (length=1400)
但是,在此脚本运行后,PHP似乎会销毁PATH
,因为再次运行它会产生以下输出。
boolean false
string 'c:\bins' (length=7)
string '' (length=0)
我通过fastcgi在Windows上使用lighttpd和PHP 5.3获得此行为。我还没有使用Linux / Apache进行测试。
以下方法在Windows上不起作用(即使您使用&): How to set $PATH in PHP?
有没有人知道改变PATH
的操作系统无关的方法?
答案 0 :(得分:1)
我相信您正在寻找set_include_path http://www.php.net/set_include_path
<?php
//Set a new path
set_include_path('/usr/lib/pear');
// Works in all PHP versions
ini_set('include_path', '/usr/lib/pear');
//Add a new path to the already existing path throug get_include_path()
set_include_path(get_include_path() . PATH_SEPARATOR . $path);
?>