CentOS 5.9、PHP 5.4.21、Tomcat 7.0.42,安全模式已关闭。
我需要从 php.ini 向存储库提交一些代码。但失败,退出代码为 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 用户帐户并成功。
最佳答案
我解决了这个问题..
首先,由于一些 php bug(?),我在运行命令时无法获取内容。 https://www.php.net/manual/en/function.system.php#108713
我修复了以下命令:
$this->system_call_detail = system($this->command_exec.' 2>&1', $this->output);
然后,我可能会收到以下错误消息:
致命:无法访问“/home/{username}/.config/git/config”:权限被拒绝
但是,没有这样的文件或目录。 所以,我用谷歌搜索了错误消息。并找到了一些博客。
http://www.jethrocarr.com/2013/08/25/the-apache-that-wanted-to-be-root/
我编辑了“/etc/sysconfig/httpd”文件并发布了博客。 并解决了。 :)
谢谢你帮助我。 德杰兹和奥伊 pull 斯克
关于PHP 通过 system() 调用 git 命令失败,退出代码为 128,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26666702/