2014-10-31 46 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

相关问题