2014-01-07 72 views
1

我正在爲MediaWiki開發一些PHP cli工具,我希望能夠從shell中將cd切入wiki的目錄。我可以從PHP做到這一點嗎?如果沒有,是否有可能把整個東西包裝進其他能夠做到這一點的東西?我可以從PHP腳本更改當前shell目錄嗎?如果是這樣,怎麼樣?

例如:

~$ mewsh @coin cd 

應該把我相應的目錄下coinwiki所在。 chdir是不夠的,因爲在PHP腳本完成後這不會改變目錄。

+0

請看這裏:[php.net/chdir](http://php.net/chdir) –

回答

1

這不是你是否可以從php做到這一點 - 你不能從任何產生過程。產生的過程是一個新過程(通常使用forkexec創建)。對新進程的工作目錄所做的更改不會影響父進程的工作目錄。這就是說,如果你想變得瘋狂,你可以:這是一個PHP腳本,它可以轉到父目錄,然後用bash替換它自己。它不能更改父進程的目錄,但可以使用新目錄啓動一個新的 shell。

<?php 
chdir('..'); // Chdir to the parent directory in this php process. 
pnctl_exec('/bin/bash'); /* Execute '/bin/bash' in the current process space. 
    This is oversimplified in many ways 
    – including that I didn't pass any arguments to the shell. */ 

如需進一步兩輪牛車,如果你在這個腳本是如何調用的控制是完全可以exec,並用新的替換當前的外殼。

~ $ exec php chdir.php 
/Users $ 

但是,如果你打算與別人分享這個腳本,你不應該有這些期望 - 這是更加健壯管理工作目錄只有自己的程序中。

相關問題