在PHP中从EXEC运行'git pull'

I'm trying to run a pull request from git using PHP's exec on windows running XAmpp. When running the script below with exec or system and try to access the file the page just never stops loading. I've check the file permissions of the directory and they're all 0777. & running git status runs fine. Not sure what the problem is.

<?php
ignore_user_abort(true);
set_time_limit(15);
exec('git pull origin master', $o);
echo implode("\n", $o);
?>

更新帐户中没有密码:

C:\xampp\htdocs>git pull origin master
From github.com:************
 * branch            master     -> FETCH_HEAD
Already up-to-date.

C:\xampp\htdocs>

从终端运行我得到:

C:\xampp\htdocs>php -f update.php
PHP Warning:  PHP Startup: ming: Unable to initialize module
Module compiled with build ID=API20090626,TS,VC6
PHP    compiled with build ID=API20090626,TS,VC9
These options need to match
 in Unknown on line 0

Warning: PHP Startup: ming: Unable to initialize module
Module compiled with build ID=API20090626,TS,VC6
PHP    compiled with build ID=API20090626,TS,VC9
These options need to match
 in Unknown on line 0
From github.com:*********
 * branch            master     -> FETCH_HEAD
Already up-to-date.
C:\xampp\htdocs>
2
额外 编辑
意见: 1
git是否正在等待其他用户输入,如密码? set_time_limit()在这里没有帮助,因为它只适用于PHP执行时间。
额外 作者 Brad,
你正在从终端运行PHP脚本,是吗?或者,你是从网上运行它?如果来自网络,我敢打赌,你的git配置取决于你的环境变量,如果从不同的用户(web服务器的用户)运行,这些变量是不同的。
额外 作者 Brad,
从终端运行它。看看它在那里工作。
额外 作者 Brad,
没有密码也更新了帖子。
额外 作者 Adam Merrifield,
它从网上运行。
额外 作者 Adam Merrifield,
更新了帖子。我不确定这两个警告是什么,但它在几秒钟内运行并完成。
额外 作者 Adam Merrifield,
@DougOwings我得到 fatal:没有一个工作树,不能使用C:\ Program Files(x86)\ git/libexec/git-core \ git-pull。
额外 作者 Adam Merrifield,
@DougOwings with - get-dir = 我得到 fatal:不是git存储库:'',但带有 - git-dir =“C:\ xampp \ htdocs \ .git“它在终端中正确运行拉。它只是仍然无法通过网络。
额外 作者 Adam Merrifield,
@DougOwings添加 - 工作树在终端中工作,但仍不能通过网络
额外 作者 Adam Merrifield,
@DougOwings,但所有文件都是 0777 ,我可以使用 exec(mkdir test)exec(del test)
额外 作者 Adam Merrifield,
您是否尝试过使用选项 - git-dir =“C:\ xampp \ htdocs”
额外 作者 Doug Owings,
@AdamMerrifield Try - git-dir =“C:\ xampp \ htdocs \ .git”--work-tree =“C:\ xampp \ htdocs”
额外 作者 Doug Owings,
@AdamMerrifield然后它听起来像一个文件权限问题。
额外 作者 Doug Owings,

1 答案

而不是使用 exec ,它会一直等到该过程完成,请使用 passthru 并确保禁用输出缓冲。这样你就可以立即看到问题所在。

0
额外