2010-05-02 30 views
1

我正在寫一些函數在PHP中使用exec()來詢問一個svn。exec()函數不規則svn結帳

The commands exec("svn list ".$myurl) works. 

現在,我嘗試使用checkout命令在svn存儲庫上獲取路徑。 當我直接在控制檯中輸入命令「svn checkout http://core.wordress.org/tags/2.9.2/最新版本」時,它可以正常工作。

但我執行exec(),這樣做時,從一個PHP腳本:

exec("svn checkout ".$myurl, $dir) 

這是行不通的。

你有什麼想法嗎?

+0

檢查您試圖編寫簽出副本的權限? PHP腳本可能像shell一樣運行,因此缺少寫權限。 – Amber 2010-05-02 08:45:29

回答

0

這可能有多種原因。

  • 執行PHP的用戶不允許寫入你想看看到

  • 的SVN倉庫目錄需要未

  • 下緩存PHP運行在用戶登錄憑據
  • SVN簽出過程開始,但需要一些額外的輸入,如可怕的「你想接受此證書」與未簽名的證書。

嘗試增加2>&1到命令到stderr重定向到標準輸出,並看看$dir。還可以使用$return_var參數exec()

正如Jacob指出的那樣,總是使用escapeshellargs()作爲您的命令參數。

+0

感謝您的回答。 我認爲PHP用戶不允許寫入目錄。 你知道如何解決它? – bahamut100 2010-05-02 09:16:14

+0

@bahamut如果您有權訪問服務器,則可以更改目錄權限。如果沒有,您可以嘗試在FTP客戶端的目錄中執行'chmod 777' - 只需注意這會使該目錄對服務器上的每個人都可寫。 – 2010-05-02 09:22:28

+0

我可以通過SSH訪問服務器。 但是:什麼是目錄更改? – bahamut100 2010-05-02 09:26:05