簡體   English   中英

PHP system()如何導出PATH

[英]PHP system() howto export PATH

我想在PHP腳本執行期間更改默認系統$ PATH var,但是由於某種原因它失敗了。

我嘗試以下內容:

<?php
$lastline = system('export PATH=$PATH:/customBin;',$return) OR die("why do i die all the time");
echo $lastline;
?>

但是它顯然一直都在消失。 (在RHEL和Debian linux發行版上都嘗試過,php版本5.3.xx,其他系統命令也可以正常運行(cat,ls等),但這些都不起作用: export PATH=$PATH:/customBin;export PATH=$PATH:/customBin:export PATH=/customBin ,所有這些都在外殼中工作。

任何幫助表示贊賞。 謝謝。

編輯:上面的代碼是錯誤的,解決方案是使用putenv('PATH=$PATH:/customBin');

系統的return value不是返回參數)是命令輸出的最后一行,如果失敗則為布爾值FALSE 在您的情況下,它可能成功了(您在$ return變量中有int 0表示成功退出)並且未返回任何內容(可能為空字符串),這在您的or語句中得出的值為false,並且執行了die。 如果要檢查導出是否成功,請嘗試

system('export PATH=$PATH:/customBin;', $return);
$return === 0 OR die('...');

或者如果您想使用系統的故障處理程序:

(system('export PATH=$PATH:/customBin;') !== FALSE) or die('...');

尚未測試,您的結果可能會有所不同。

使用putenv從PHP更改環境變量可能會更好。 只需使用getenv獲取當前值,添加任意內容,最后調用putenv即可更改該值。

您使用system方法是創建一個新的Shell環境,在其中設置PATH,然后將其保留。

此外,您的成功檢查也已失效。 該調用將返回一個空字符串,這將使您的條件檢查失敗。

據我所知,您無法操縱調用php的環境。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM