shell_exec(' git push origin master')无法正常工作

时间:2014-10-30 15:23:27

标签: php git git-push bitbucket-server

我想将包含数据的文件夹推送到atlassian Git stash中的空存储库。存储库是通过其余的api创建的。远程原点已设置。当我进入

$ git push origin master
在shell中它可以正常工作。当我使用PHP交互式shell并输入

exec('git push origin master');

它也有效。但是当我的PHP文件中调用代码时没有任何反应。当然代码是一样的。我在正确的工作目录中(我在chdir()之前用shell_exec更改了它。没有报告错误(即使error_reporting设置为E_ALL),当我在exec()中设置输出参数时,我得到一个空数组。

有人可以帮忙吗?

2 个答案:

答案 0 :(得分:1)

当您以交互方式执行代码或通过shell执行命令时,您将在您的用户帐户和shell环境下执行。

我认为这不起作用的原因是你作为另一个用户执行PHP脚本(可能缺少你的ssh / git环境配置)。

需要更多信息才能更好地回答您的问题,但您可能需要首先验证用户是否正在执行您的PHP文件,同时还可以通过以下操作执行git push origin master:< / p>

sudo su -s /bin/bash -c "cd /my/git/repo/dir; git push origin master" MYPHPEXECUTEUSER

答案 1 :(得分:0)

我发现我必须在shell命令的末尾添加'2&gt;&amp; 1'以在使用shell_exec()时获得错误输出。它返回“致命:无法读取密码为”url“:设备未配置”。我只需要以http basic auth方式将密码添加到URL。现在一切正常。谢谢你的答案:)