2012-03-20 45 views
0

我想用中繼()方法和命令行來改變工作目錄更改目錄..使用PHP中繼()

這是PHP腳本

<?php 
passthru("chdir C:/Documents and Settings/svn"); 
print passthru("dir"); 

?> 

但是,它不改變工作目錄到C:/ Documents and Settings/svn .. 它正在輸出當前目錄中的文件.. 我該如何解決這個問題?

回答

2

您當前的代碼有幾個問題:

  1. passthru運行一個新的進程,這可能會改變自己的當前目錄 - 但是這並不在所有
  2. 影響PHP進程的當前目錄
  3. passthru打印命令的輸出,但它不返回什麼;所以print末做什麼都沒有
  4. 它試圖改變當前目錄,即使它並不真的需要

要解決前兩個,使用簡單chdir代替第一passthru和廢料在print

chdir("C:/Documents and Settings/svn"); 
passthru("dir"); 

要解決三個:

passthru("dir \"C:/Documents and Settings/svn\""); 
0

當通過passthru執行的命令終止時,當前工作目錄不會傳播到PHP,因爲它是一個子進程,與PHP不同。

在你的情況,你可以在想要的目錄添加到「目錄」命令,就像這樣:

passthru("dir \"C:/Documents and Settings/svn\""); 

我不建議直接使用在你的情況下,PHP chdir()功能,因爲它可以有令人討厭的副作用,特別是如果你包含腳本中的其他PHP文件。 如果您使用安全模式,它也可能無法正常工作。

0

passthru(「chdir C:/ Documents and Settings/svn; dir」);