2014-03-04 114 views
2

首先,這是我第一次設置webhook,並且我不熟悉Windows服務器。我看過不少帖子,但我仍然無法解決問題 - 可能是由於我對Windows服務器和權限缺乏瞭解。在IIS上通過PHP設置git部署時遇到問題

我有一個Windows 2008 R2,我希望能夠在將更改推送到外部GIT存儲庫後通過PHP腳本進行自動拉取。

  • 該網站已設置並正常工作。它生活在c:\ inetpub \ wwwroot \ sitename
  • 這個文件夾是用我的遠程桌面用戶,這是一個管理員克隆。克隆是通過Git Bash完成的,我知道SSH密鑰位於管理員的home/.ssh目錄中。
  • 此文件夾是IIS_IUSRS
  • 寫我也複製了鑰匙進入C:\Program Files (x86)\Git\.ssh這裏指出的(Git can't find .ssh

我有一個文件夾中的一個PHP腳本與「拉」代碼:

exec('"C:\Program Files (x86)\Git\bin\git.exe" pull 2>&1', $output); 
var_dump($output); 
echo '--done--'; 

頁面只是掛載在瀏覽器上的加載圖標。沒有輸出。

但如果做 '狀態':

exec('"C:\Program Files (x86)\Git\bin\git.exe" status 2>&1', $output); 
var_dump($output); 
echo '--done--'; 

我得到預期的輸出。

我猜這可能是由於SSH密鑰的權限。運行使用Windows CMD(不混帳bash)的兩個腳本作品雖然

所以我的煩惱是:

  • 我不知道,如果它沒有被加載的原因SSH密鑰我無法在瀏覽器上看到錯誤
  • 我不確定我是否從正確的方向開始。
  • 我不敢小心翼翼,因爲這是爲了生產。

    謝謝!

    回答

    0

    很可能您已經爲您的當前用戶存儲了您的git憑據,但是當Web服務器(IIS_IUSRS)執行git命令時,它沒有憑據,因此會要求輸入用戶名和密碼。然後掛起腳本。

    你可以嘗試:

    • 管的用戶名和密碼的過程編輯:這並沒有爲我工作,因爲Git會創建未綁定到管多個子進程。
    • 將憑據放在_netrc文件中並將其保存在IIS用戶的主目錄中(請參閱C:\ Windows \ ServiceProfiles ...)
    • 以您的IIS用戶身份啓動控制檯,使用git命令並存儲憑據該用戶的憑證助手。

    在這裏看到有關如何存儲的Git憑證:https://confluence.atlassian.com/display/STASH/Permanently+authenticating+with+Git+repositories

    +0

    好,感謝這一點。只要有空,我會試一試。 – user3377465

    相關問題