PHP通过system()调用git命令,失败,退出代码为128


PHP calls to git command via system(), fails with exit code 128

CentOS 5.9,PHP 5.4.21,Tomcat 7.0.42,安全模式关闭。

我需要从php向存储库提交一些代码。但失败,退出代码为128。代码如下,command_exec为'cd/data/project&git添加。'

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;"作为apache用户帐户,它成功了。

我解决了这个问题。。

首先,由于一些php错误(?),我在运行命令时无法获取内容。http://kr1.php.net/manual/en/function.system.php#108713

我修复了以下命令:

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

然后,我可以得到错误消息如下:

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"文件。和解决。:)

谢谢你帮我。decze和ojrask