CentOS 5.9,PHP 5.4.21,Tomcat 7.0.42,安全模式已关闭。
我需要从php提交一些代码到存储库。但是退出代码128失败了。 代码如下,command_exec是&#cd; 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运行git命令作为apache用户帐户,但是从PHP运行的程序失败,退出代码为128。
我从PHP中猜到了这个原因。所以,我尝试了这个git命令," php -r'系统(" cd / data / project&& git add。",$ test); echo $ test;'"从cmd作为apache用户帐户并成功。
答案 0 :(得分:1)
我解决了这个问题..
首先,我在运行命令时无法获取内容,因为有些php bug(?)。 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'文件。 并解决了。 :)
感谢帮助我。 deceze和ojrask