运行“git pull”;在 PHP 中使用 shell_exec 不显示错误
我正在为 github 创建一个用 PHP 编写的部署脚本。我正在使用 shell_exec 命令运行 git pull ,效果很好。
当拉取错误时,就会出现我的问题。如果我在终端中执行此操作,则会收到完整错误。例如:
git pull origin master
Updating f706749..8468d24
test.txt: needs update
error: Entry 'test.txt' not uptodate. Cannot merge.
但是当我在 shell_exec 中运行相同的命令时,输出被截断为
Updating f706749..8468d24
test.txt: needs update
错误消息被截断,可能是因为它是前一个响应的响应。有没有办法返回完整的输出?
I'm creating a deployment script for github, written in PHP. I'm using the shell_exec
command 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?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
10-1 丢失的行不会写入stdout,而是写入stderr。
在这种情况下,您可以将 stderr 重定向到 stdout,
2>&1 将错误消息重定向到正常的输出文件。
10-1 the missing lines are not written to stdout but to stderr.
In that case you can redirect the stderr to stdout with
The 2>&1 redirects the error messages to the normal output file.
通过搜索一下,我可能发现 回答您的问题。
尝试捕获 stderr。
希望这有帮助,祝你好运!
By searching a bit, I might have found the answer to your problem.
Try capturing stderr.
Hope this helps and good luck!
将错误通过管道传输到您的输出。在 exec 命令中使用 2>这是“标准错误”流。
Pipe the error to your output. In the exec command use 2> which is the "standard error" stream.