2014-10-31 197 views
-1

CentOS 5.9,PHP 5.4.21,Tomcat 7.0.42,安全模式關閉。通過系統()調用git命令,失敗,退出碼爲128

我需要從PHP提交一些代碼到存儲庫。但退出代碼128失敗。 代碼如下,command_exec爲'cd/data/project & & git add。'

ob_start(); 
$this->system_call_detail = system($this->command_exec, $this->output); 
$logger->debug('ExecuteCMD system call result : '.$this->system_call_detail); 
ob_end_clean(); 

我可以從CMD apache用戶帳戶運行git命令,但程序的運行從PHP失敗,退出代碼128

我猜從PHP這個原因。所以,我嘗試了這個git命令,「php -r」system(「cd/data/project & & git add。」,$ test); echo $ test;'「從cmd作爲apache用戶帳戶並且成功。

+1

請注意,'system()'**返回值**是輸出的最後一行; **退出代碼**將在'$ this-> output'中。 – deceze 2014-10-31 06:13:08

+1

'$ this-> command_exec'的內容是什麼? – ojrask 2014-10-31 06:20:02

回答

0

我解決這個問題..

首先,運行命令時,由於一些PHP的錯誤我無法獲得的內容(?)。 http://kr1.php.net/manual/en/function.system.php#108713

我固定的命令初級講座:

$this->system_call_detail = system($this->command_exec.' 2>&1', $this->output);

,然後,我可能會得到錯誤的MSG初級講座:

fatal: unable to access '/home/{username}/.config/git/config': Permission denied

但是,沒有這樣的文件或目錄。 所以,我用錯誤信息穀歌搜索。並找到一些博客。

http://www.jethrocarr.com/2013/08/25/the-apache-that-wanted-to-be-root/

我編輯的 '在/ etc/SYSCONFIG/httpd的' 與貼在博客文件。 並解決。 :)

感謝幫助我。 deceze和ojrask

+1

不是「PHP錯誤」。 stderr!== stdout,它們是單獨的輸出流。 – deceze 2014-10-31 14:24:30

+0

@deceze謝謝,我添加了關於'2>&1'的網址。 http://www.gnu.org/software/bash/manual/bash.html#Redirections – 2014-11-03 00:48:43

相關問題