我嘗試使用以下代碼在使用exec()
之前臨時更改PATH
。是否可以臨時更改PHP中的PATH?
$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)
我在Windows上使用lighttpd和PHP 5.3通過fastcgi獲得了這種行爲。我還沒有用Linux/Apache進行測試。
以下方法在Windows(即使你使用&)不工作: How to set $PATH in PHP?
有誰知道一個與操作系統無關的方式來改變PATH
?
你爲什麼要這麼做? '運行putenv( 'PATH = /網絡/上傳/路徑/到/惡/')'?; –
我有一個使用exec()的函數。我想讓它在單元測試中失敗。 –
您希望路徑變量在腳本終止後保留嗎? –