PHP exec() - git push origin master 不起作用,但其他 git 命令正在工作


php exec() - git push origin master not working, but other git commands are working

我使用了下面的代码:

    echo exec("git add . ");  //this is working  
echo exec("git commit -am 'first commit' "); //also working  
echo exec("git push origin master");  //NOT WORKING, also not showing any error . 

我从用户到www-data的文件夹权限。所以,一些 git 命令可以工作,但是

GIT PUSH ORIGIN MASTER

无法从 PHP 执行 .解决方案是什么?另外,请告诉我为什么 exec 中的 PUSH 没有显示任何错误或消息,我怎么能看到这些消息.另外,如果可能的话,请为我提供任何好的链接,以便从php exec更高级地使用git命令。

更新:我也试过这个:我通过创建文件 .git/hooks/post-commit 添加了提交后的钩子

我在其中添加了以下代码:

git push origin master

但是提交后我没有收到任何消息或错误,它只是提交了但没有做任何推动。

谢谢!

我假设 push 命令将尝试推送到远程存储库(即不是系统上的另一个文件夹,而是 SSH/HTTPS 后面的远程服务器)。

在这种情况下,您很可能缺少 HTTPS 客户端证书 HTTPS 或 SSH 密钥。您的 Web 服务器(以及 PHP)很可能以其他用户身份运行,并且无法访问私钥。接下来,如果私钥需要密码,它将不起作用,因为exec命令不是交互式会话。

无论如何,我强烈建议您使用某种绑定,而不是调用二进制文件。任何直接调用都将启动一个新进程,这与调用库的效率要低得多。

你检查过你在哪个分支吗?"git status"会告诉你。

我还建议在分支上工作,而不是直接在主服务器上工作。

Git 分支dev_test

git 结帐dev_test

git add .

git commit -a -m "first comment"

git push origin dev_test

Git 结帐大师

git 合并dev_test

git 推送源头