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

CentOS 5.9,PHP 5.4.21,Tomcat 7.0.42,安全模式关闭。</ p>

我需要从php提交一些代码到存储库。 但是退出代码128失败了。
编码在下面,而command_exec是'cd / data / project&amp;&amp; git add。'</ p>

  ob_start(); 
$ this-&gt; system_call_detail = system($ this-&gt; command_exec,$ this-&gt; output);
$ logger-&gt; debug('ExecuteCMD系统调用结果:'。$ this-&gt; system_call_detail);
ob_end_clean();
</ code> </ pre>

我可以运行git命令 作为来自cmd的apache用户帐户,但是从PHP运行的程序失败,退出代码为128。</ p>

我从PHP中猜到了这个原因。 所以,我尝试了这个git命令,“php -r”系统(“cd / data / project&amp;&amp; git add。”,$ test); echo $ test;'“从cmd作为apache用户帐户,它成功了。 </ p>
</ div>

展开原文

原文

CentOS 5.9, PHP 5.4.21, Tomcat 7.0.42, Safe mode is off.

I need to commit some code to repository from php. but failed with exit code 128. Codes are below, and command_exec is '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();

I can run git command as the apache user account from cmd, but programs run from PHP fail with exit code 128.

I guessed this cause from PHP. So, I tried this git command, "php -r 'system("cd /data/project && git add .", $test); echo $test;'" from cmd as apache user account and it success.

douren6874
douren6874 $this->command_exec的内容是什么?
接近 6 年之前 回复
duaedf6509
duaedf6509 注意,system()返回值是输出的最后一行;退出代码将在$this->output中。
接近 6 年之前 回复

1个回答



我解决了这个问题.. </ p>

首先,我在运行命令时无法获取内容 ,因为一些php bug(?)。
http:// kr1 .php.net / manual / en / function.system.php#108713 </ p>

我修改了以下命令:</ p>

$ this-&gt; system_call_detail = system($ this-&gt; command_exec。'2&gt;&amp; 1',$ this-&gt; output); </ code> </ p>

然后 ,我可以得到以下错误消息:</ p>

致命:无法访问'/home/{username}/.config/git/config':权限被拒绝</ code> < / p>

但是,没有这样的文件或目录。
因此,我使用错误消息来搜索。 并找到了一些博客。</ p>

http://www.jethrocarr.com/2013/08/25/the-apache-that-wanted-to-be-root/ </ p>

我编辑了'/ etc / sysconfig / httpd'文件并发布了博客。
已解决。 :)</ p>

感谢您的帮助。

deceze和ojrask </ p>
</ div>

展开原文

原文

I solved this problem..

First, I couldn't get contents when run command, because of some php bug(?). http://kr1.php.net/manual/en/function.system.php#108713

I fixed the command belows:

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

and then, I could get error msgs belows:

fatal: unable to access '/home/{username}/.config/git/config': Permission denied

But, there were no such files or directory. So, I googled with the error msgs. and found some blog.

http://www.jethrocarr.com/2013/08/25/the-apache-that-wanted-to-be-root/

And I edited '/etc/sysconfig/httpd' file with the blogs posted. And Solved. :)

Thank for helping me. deceze and ojrask

doufei6456
doufei6456 谢谢,我正在添加关于'2>&1'的网址。 gnu.org/software/bash/manual/bash.html#Redirections
接近 6 年之前 回复
du16178
du16178 不是“PHP bug”。 stderr!== stdout,它们是单独的输出流。
接近 6 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐