【发布时间】:2011-07-05 20:50:07
【问题描述】:
我希望有人能提供帮助,我有一个 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。
我看到了另一个类似的帖子,但不确定它是如何实现的 >> Shell_exec with git pull?
【问题讨论】:
-
git pull的输出是什么?您是否尝试过git pull origin master或您的分支/遥控器的名称? -
您好.. 很遗憾,
git pull没有返回任何内容,git pull origin master也没有返回 - 很奇怪。 -
您提到的另一个问题的答案是存在权限问题,这似乎是合理的,因为
git log和git status不需要写入存储库,而 @987654335 @ 会。要对此进行调查,我会将您的git pull更改为touch /tmp/whatever,然后使用ls -l /tmp/whatever查找拥有该文件的用户和组——这将告诉您shell_exec命令正在以哪个用户身份运行。如果您不能以该用户身份写入存储库目录,这将解释为什么git pull失败... -
啊,它正试图通过
apache用户进行拉取,不知道我该如何改变它,改为使用特定用户......认为这就是问题所在!再次欢呼 -
尝试从 php 运行
git pull时的一系列注意事项 ... jondavidjohn.com/b/7m
标签: php git shell-exec git-pull