shell_exec 和 git pull
我希望有人可以提供帮助,我有一个 PHP 页面,它使用 shell_exec
压缩目录并运行 git pull
来记录最近的存储库更改。
$op = shell_exec("cd /home/user/git/$repo/$dir/; zip -r /home/user/archives/$dir.$datestamp.zip $dir; cd /home/user/git/$repo/$dir/; git pull");
拉链工作正常。如果我将 git pull
更改为例如 git log
或 git status
- 在我的 shell_exec 中,这也有效,并且我可以看到日志文件。
只是似乎不喜欢 git pull 。
我看到了另一篇与此类似的帖子,但不确定它是如何实现的>> 使用 git pull 执行 Shell_exec?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
从评论中的描述来看,问题似乎是您的 apache 用户无法写入存储库,这在您使用 git pull 时显然是必需的。您有两个行动方案:
apache
用户可以对其进行写入。您应该仔细考虑任一选择的安全含义,但第二个选项可能是最简单的。如果您还没有这样的组,则可以使用以下命令创建它:
...,然后将您自己和 Apache 用户添加到该组:
然后您可以按照 另一个问题以更改存储库的权限。重申一下那些略有不同的内容:
那么希望您的 git pull 应该可以工作。
From your description in the comments it seems that the problem is that your
apache
user cannot write to the repository, which is clearly required when you usegit pull
. You have two courses of action:apache
user can write to itYou should think carefully about the security implications of either choice, but the second option is probably easiest. If you don't already have such a group, you can create it with:
... and then add yourself and the Apache user to this group:
Then you can follow the instructions in another question to change the permissions on the repository. To reiterate those with some slight variations:
Then hopefully your
git pull
should work.