2011-08-10 25 views
4

我已經創建了一個命令,用於對存儲在託管SVN服務上的SVN存儲庫進行信息調用。這裏有一個例子:使用PHP中的exec()製作HTTPS SVN命令行請求

exec('svn info https://myrepo.svn.beanstalkapp.com/project/name/folder 2>&1', $output, $returnStatus); 
if ($returnStatus) 
{ 
    print_r($output); 
} 

我得到的迴應是:

Array 
(
    [0] => Authentication realm: SVN 
    [1] => Password for 'apache': Authentication realm: SVN 
    [2] => Username: svn: PROPFIND request failed on '/project/name/folder' 
    [3] => svn: PROPFIND of '/project/name/folder': authorization failed (https://myrepo.svn.beanstalkapp.com) 
) 

我運行腳本,對具有的Plesk上有一個箱子。它在本地運行最終,所以我懷疑這是一個配置問題(我似乎無法找到任何在線答案)。

我不知道如何讓Apache用戶能夠訪問身份驗證領域 - 我認爲這是手頭的問題。

+0

它似乎通過https使用基本身份驗證。所以使用'svn --password ... --username ...'來運行請求可能就足夠了。 – mario

+0

我仍然拋出該錯誤。我使用的確切命令是svn info --username myuser --password pass https://myrepo.svn.beanstalkapp.com/project/name/folder 2>&1 - 給出相同的錯誤。 :-( –

+1

)您是否也可以添加'--no-auth-cache --non-interactive'選項進行測試?這可能與您的情況有關,否則嘗試將$ HOME和$ USER設置爲您成功執行的帳戶' svn info'或者作爲最後的手段配置'sudo'在該帳戶下執行任何交互操作 - 而不是'apache'用戶(可以運行在沙箱/監獄/ selinux/etc?) – mario

回答

2

您需要提供登錄憑據 - --username--password(或確保該證書存儲在〜/的.subversion用戶運行的應用程序)

而且你爲什麼不使用一些客戶端庫像phpsvnclient - http://code.google.com/p/phpsvnclient/

+0

我會使用phpsvnclient,但它不是很友好或者看起來不太好,我實際上通過URL傳遞了用戶名和密碼,即http:// username:password @ http://myrepourl.beanstalkapp.com - 它仍然會拋出那個錯誤......我認爲這是一個配置錯誤或者什麼......也許Apache用戶沒有權限訪問那個「realm」? –

+0

David D. - 你試過它作爲'svn info --username - -password https:// myrepo.svn.beanstalkapp.com/project/name/folder' – manojlds