我使用了下面的代码:
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 推送源头