繁体   English   中英

shell_exec('git push origin master')将不起作用

[英]shell_exec('git push origin master') won't work

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

$ git push origin master

在外壳中一切正常。 当我使用PHP交互式外壳程序并输入

exec('git push origin master');

它也可以。 但是,当在我的PHP文件中调用代码时,什么也没有发生。 当然,代码是相同的。 我在正确的工作目录中(我在shell_exec之前使用chdir()进行了更改)。 没有错误报告(即使将error_reporting设置为E_ALL ),并且当我在exec()设置输出参数时,也会得到一个空数组。

有人可以帮忙吗?

交互式执行代码或通过外壳执行命令时,您将在用户帐户和外壳环境下执行。

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

需要更多信息才能更好地回答您的问题,但是您可能希望首先验证正在执行PHP文件的用户,并且还可以通过执行以下操作来执行git push origin master

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

我发现在使用shell_exec()时,我必须在shell命令的末尾添加'2>&1'以获得错误输出。 它返回“致命:无法读取” URL”的密码:未配置设备”。 我只需要以http基本身份验证方式将密码添加到url。 现在一切正常。 感谢您的回答:)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM