我想将包含数据的文件夹推送到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()
中设置输出参数时,我得到一个空数组。
有人可以帮忙吗?
答案 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。现在一切正常。谢谢你的答案:)