2017-07-17 140 views
0

我需要創建一個Web應用程序,它與SVN命令行一起工作。所以我想使用svn commit的exec命令,並且一個變量包含工作副本的路徑。我試過這個代碼,但沒有工作。提交沒有發生。SVN提交命令行與路徑中的變量在PHP中

<?php 
$lpath="c:\a\svn\projectwc"; 
$msg="first commit"; 
exec("svn commit -m $msg $lpath"); 
?> 

是的,我加入了所有的文件已經。我嘗試通過用路徑值替換lpath並且它工作。 請幫助...

+5

定義「沒有工作」。 –

+0

沒有顯示錯誤,但未提交。 –

回答

2

你的字符串,而你需要做的

svn commit -m "first commit" c:\a\svn\projectwc 

由於日誌信息是需要在報價超過一個字擴展到

svn commit -m first commit c:\a\svn\projectwc 

我認爲你應該重新考慮你想在這裏實現的目標。基於用戶輸入構建字符串並將它們傳遞給exec從安全角度來看是非常糟糕的想法。

您還標記了文章tortoise-svn - 如果您從命令行調用TSVN,它會彈出絕對不適合服務器端的GUI。

然後你有其他方面的考慮,如:

  • 如何記錄錯誤消息,當事情出錯
  • 是否在Web服務器有足夠的訪問到工作副本來執行這些操作
  • 是甚至可能在你的環境中調用「svn」。

無論你想要做什麼,很可能有一些免費軟件已經做到了。 svn有一個webdav界面和一個以多種語言實現的API--這將是比使用更安全

+0

如果我直接指定路徑,但不使用變量時,該提交將起作用。而且這個接口在PHP中有一個針對SVN的pecl擴展,但問題是需要大約2或3天來處理請求並將其安裝到系統中(Iam在一家軟件公司進行,因此他們擁有防火牆和所有那東西)。但要在使用命令行SVN之前完成它。它的一個學校項目,所以我不會擔心安全。 –

+0

將命令分配給一個變量,例如'$ cmd =「svn commit -m \」$ msg \「$ lpath」;'。檢查它看起來很理智:'echo $ cmd;'另請參見我在這裏添加了關於提交消息的引號。 – Rodney