2014-06-26 87 views
0

我在遇到新的VPS時遇到了麻煩。我創建了一個文件pull.php與此代碼在我的GIT文件夾:Apache允許php運行`git pull`

<?php 
$output = shell_exec('git pull'); 
echo "<pre>$output</pre>"; 
?> 

這是工作的罰款在我的共享主機,但在我的VPS它的返回null,沒有「拉」的命令執行。當我改變了命令「git的拉」到「混帳地位」這是顯示結果:

分支主 你的分支上最新與「產地/主」。

未跟蹤文件:(使用「混帳添加...」,在這將是 致力於包括)

info.php的pull.php的test.txt

沒有加入到承諾,但未跟蹤文件存在(使用「git add」到 軌道)

我的文件夾chmod to 777和php似乎可以正確寫入它。 'git pull'對SSH的罰款。我的服務器:Ubuntu 14.x,Apache2,php5

我非常感謝任何幫助!

+0

檢查您的錯誤日誌。你也使用SSH密鑰授權給Git? – arleslie

+0

777是一個蹩腳的藉口......你應該真正執行PHP作爲用戶而不是'apache'或'nobody'。這將解決大多數人的問題。 – zamnuts

+0

@arleslie,我啓用了error_display但沒有錯誤。我的GIT remote是GITHUB,所以不需要ssh鍵來拉。 –

回答

0

我覺得很奇怪你沒有輸出什麼都沒有......

你有root權限嗎?

嘗試以root身份在正確的文件夾:命令和-u git的阿帕奇拉

看看你得到任何輸出即可。

+0

這是我得到的: #須藤-u apache的混帳拉 須藤:未知的用戶:阿帕奇 須藤:無法初始化政策插件 –

0

您應該添加下列行來/etc/sudoers

apache2 ALL=(root) NOPASSWD: /usr/bin/git 

這允許apache的執行GIT中作爲根,因此訪問文件

然後調用GIT中命令(適當的可執行文件的位置是優選的)

shell_exec('sudo /usr/bin/git pull /path/to/your/repo'); 
+0

沒有幫助,它仍然是空白:( –

+0

您需要爲我們提供更多的代碼和細節看看問題出在哪裏 - 什麼是你目前的工作目錄 - 多一點的代碼 - 你有沒有試過使用任何其他的命令執行PHP函數? -... – Ghostwriter78

0

很可能git pull正在拋出一個錯誤,但錯誤不是由默認。爲了解決這個問題改變這一行

$output = shell_exec('git pull'); 

這一個:

$output = shell_exec('git pull 2>&1');