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)
PATH
ただし、このスクリプトを 2 回実行すると次の出力が生成されるため、このスクリプトの実行後に PHP が破棄されるようです。
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?
OSにとらわれずに変更する方法を知っている人はいますPATH
か?