3

我尝试使用以下代码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)

但是,似乎 PHPPATH在此脚本运行后会破坏,因为第二次运行它会产生以下输出。

boolean false
string 'c:\bins' (length=7)
string '' (length=0)

我通过 fastcgi 在带有 lighttpd 和 PHP 5.3 的 Windows 上得到了这种行为。我还没有使用 Linux/Apache 进行测试。

以下方法在 Windows 上不起作用(即使您使用 &): 如何在 PHP 中设置 $PATH?

有谁知道一种与操作系统无关的改变方式PATH

4

1 回答 1

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);
?>
于 2012-11-06T18:53:14.000 回答