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

标签 php git

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/

相关文章:

php - MySQL num_rows 不返回值(SELECT INTO)

单个文件的 git diff

c# - Git 存储库中不应包含哪些内容?

android - Drawables 不会推送到 github Android Studio

php - 将隐藏变量获取到函数中

php - 将 Unix 时间戳与日期进行比较,忽略时间

php - URL 链接中的 MySQL 和 HTML 数据库引用

Git pack 文件名——摘要是什么?

Git 到 GitHub - 无法连接到端口 443 : Connection refused

php - Mysql 多对多映射表返回一行并连接会导致重复行的值