2014-09-19 30 views
0

對不起,我發佈了錯誤的代碼之前,但這再次是問題。pushd不改變目錄在php 14.04

我想在php中使用pushd,但工作目錄不變。我已經得到了示例代碼的幾行:

<?php 
    exec('pwd; pushd abc/def/; pwd; popd; pwd; 2>&1', $output); 
    echo('<pre>'); 
    print_r($output); 

輸出

Array 
(
    [0] => /var/www/html 
    [1] => /var/www/html 
    [2] => /var/www/html 
) 

我都希望感謝大家提前在試圖回答這個問題 vinaka

+0

我在命令中看不到任何pushd,你能再次檢查嗎? – ajreal 2014-09-19 02:18:51

+0

哎呀抱歉,我發佈了錯誤的代碼 – 2014-09-19 04:13:32

回答

0

關於你的問題:

exec()創建一個新的進程,它有自己的工作目錄,所以它不會影響啓動進程的工作副本d it。只需在瀏覽器的起始頁面輸入「change working directory php」並做一些研究,這不應該太難找到。

關於你的代碼:

並不是每一個外殼有一個pushd內置。例如,Debian上的默認/ bin/sh沒有,但是你沒有看到,因爲儘管你嘗試了,但你只捕獲stdout而不是stderr。我建議用PHP編寫代碼,而不是解析shell輸出。