2015-08-18 34 views
0

我目前正在計劃使用Symfony的ProcessBuilder,它允許設置一些環境變量,它將傳遞到proc_open調用。與一個命令的環境變量混淆

我需要某個命令來更改TMPDIR並在之後恢復它,所以我想知道在調用之後修改後的env(並因此修改了env變量的值)是否會被恢復,或者我需要自己恢復嗎?如果需要某個特定的命令(我的情況是ghostscript),這個值是否會發生變化?

感謝

+1

假設您正在使用'putenv'來更改環境變量,那麼當請求完成時它將恢復爲標準設置。您可以使用'getenv'複製舊值和'putenv'以在請求期間自行重置,以防腳本中的其他內容嘗試使用它。 – kainaw

+0

我指的是'proc_open'函數的'$ env'參數,但是我猜'putenv'也可以這樣做,然後... – Talus

+1

對不起。我沒有看完整個問題。 'proc_open'中的env不是PHP的環境。只要保持I/O指針處於打開狀態,它將持續運行,但僅限用於打開指針的命令。 – kainaw

回答

0

一些測試後,它似乎在proc_open功能$env參數是真的修改環境只對運行過程的持續時間。所以它基本上涵蓋了我的問題。 :}