2012-03-16 17 views
1

我们有一个PHP脚本,其中包括什么,但下面的代码工作...GitHub的后钩不符合我们的PHP脚本

/usr/bin/git pull

...我们最初只使用git pull

每当GitHub发布数据到这个脚本,git pull失败。我们已经尝试使用http://us2.php.net/manual/en/function.shell-exec.php并将响应存储在一个变量中,并将该变量的内容写入文本文件,这样我们就可以确保命令正在执行 - 它们是!我们可以执行例如git log,并且文本文件将包含git日志响应的所有内容。但执行git pull只是不起作用?

我们的服务器工程师建议使用git install的完整路径(使用which git来查找路径),这就是您在上面看到的,但这也不起作用。

当GitHub的post-hook调用我们的脚本但是git pull不起作用时,为什么我们可以执行git命令,例如git log

有没有人有任何想法,为什么这不起作用?

谢谢。

+0

您可以发布整个脚本吗? – 2012-03-16 10:47:12

+2

@starlocke“解决方案必须聘请新的服务器工程师,对吧?”是的,这将是很好的:-) – Integralist 2012-03-16 13:52:59

+0

@WaynnLue整个脚本? php脚本实际上就是整个脚本的'/ usr/bin/git pull'(因为命令是反引号包装的,PHP把这行看作是shell命令而不是PHP代码)。所以我们使用PHP来触发shell命令,并且通过GitHub触发器调用PHP脚本(当我们将更改推送到GitHub时发生)。我们发现我们可以执行'git log'&'git status',而不是'git pull'或类似的'git fetch'命令。我在想,必须有一个PHP权限问题,但为什么允许'git log'或'git status'而不是'git pull'? – Integralist 2012-03-16 13:57:27

回答

0

确保代码正在以具有足够特权的用户身份执行。您可以通过在试图用git拉动的脚本中运行whoami来确认此问题