在PHP中使用shell_exec运行'git pull'不显示错误

我正在为用github创建一个用PHP编写的部署脚本。 我正在使用 shell_exec </ code>命令来运行 git pull </ code>,它运行正常。 </ p>

拉动时出现错误,我的问题就出现了。 如果我在终端中执行此操作,则会收到完整错误。 例如:</ p>

  git pull origin master 
更新f706749..8468d24
test.txt:需要更新
error:条目'test.txt'不是uptodate。 无法合并。
</ code> </ pre>

但是当我在 shell_exec </ code>中运行相同的命令时,输出被截断为</ p>

 更新f706749..8468d24 
test.txt:需要更新
</ code> </ pre>

错误消息正在被切断,可能是因为它是来自 以前的回应。 有没有办法返回完整的输出?</ p>
</ div>

展开原文

原文

I'm creating a deployment script for github, written in PHP. I'm using the shell_execcommand to run git pull which works fine.

My issue occurs when there is an error with the pull. If I do it in Terminal, I get the full error. For example:

git pull origin master
Updating f706749..8468d24
test.txt: needs update
error: Entry 'test.txt' not uptodate. Cannot merge.

But when I run the same command in shell_exec the output is truncated to just

Updating f706749..8468d24
test.txt: needs update

The error message is getting cut off, possibly because it's a response from the previous response. Is there a way to return the full output?

3个回答



10-1缺少的行不会写入 stdout </ strong>,而是写入 stderr </ strong> 。</ p>

在这种情况下,您可以使用</ p>

  stderr </ strong>重定向到 stdout </ strong>  >“command 2&gt;&amp; 1”
</ code> </ pre>

2&gt;&amp; 1 </ strong>将错误消息重定向到正常输出文件。< / p>
</ div>

展开原文

原文

10-1 the missing lines are not written to stdout but to stderr.

In that case you can redirect the stderr to stdout with

"command    2>&1"

The 2>&1 redirects the error messages to the normal output file.

dongyue1988
dongyue1988 太棒了,我不知道stdout和stderr。 这解决了这个问题。 谢谢!
9 年多之前 回复



通过搜索,我可能找到了回答你的问题。</ p>

尝试捕获stderr。</ p>

希望这有帮助,祝你好运!</ p>
</ div>

展开原文

原文

By searching a bit, I might have found the answer to your problem.

Try capturing stderr.

Hope this helps and good luck!



将错误传递给输出。 在exec命令中使用2> 这是“标准错误”流。</ p>
</ div>

展开原文

原文

Pipe the error to your output. In the exec command use 2> which is the "standard error" stream.

立即提问