很容易診斷我遇到過的最困難的問題。我似乎無法呼叫:通過PHP執行IIS git pull IIS
exec('call git pull', $output);
該進程掛起並傾向於採取與它的IIS。
exec('call git status', $output); //works fine
這裏是我做了什麼:
- 生成的RSA密鑰添加到github上(密碼爲空)
- 每個人都有
mysite/.git/
權限,Program Files/git/bin
和cmd.exe
- 試過SSL在其他帖子中用'斜線'問題提到的證書修補程序
- 嘗試使用https://而不是SSH
- 試圖管道到stderr
2>NUL
和2>&1
顯然,有一個權限問題,即exec
電話cmd.exe
進而調用git.exe
,進而調用sh.exe
連接到github上,這反過來又利用了git-pull
和可能git-send-pack
和上帝知道什麼。
我猜'sh.exe'確定當前用戶是IUSR並且找不到RSA密鑰進行身份驗證。
如果我能弄清楚如何ssh-keygen
IUSR帳戶,我會嘗試。
如果我能弄清楚如何exec
git bash而不是git(通過cmd.exe
)我會試試這個。
這裏的問題在它的最簡單的形式:
如何從我的GitHub庫通過PHP的exec
方法拉?
該問題當然似乎與SSH,但我完全在一切嘗試結束。
幫助!
爲什麼使用'call git pull'而不是'git pull'? – gustavotkg
調用只是一個'推薦'的方法使用exec()作爲一個閱讀它 - 我已經試過這兩種方法,並沒有發現可觀的區別 – rmirabelle
我相當積極,你面臨寫權限問題。如果你考慮git status與git pull之間的區別..一個顯示關於存儲庫的信息,而另一個實際上使文件系統級別發生變化。 – Kevin