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