是否可以在PHP中临时更改PATH?

时间:2012-11-06 16:57:21

标签: php windows path

我尝试使用以下代码在使用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的操作系统无关的方法?

1 个答案:

答案 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);
?>