GitHub柱钩不';我们无法使用PHP脚本

GitHub柱钩不';我们无法使用PHP脚本,php,git,github,git-pull,remote-server,Php,Git,Github,Git Pull,Remote Server,我们有一个PHP脚本,它只包含以下代码 /usr/bin/git pull …我们最初使用的是git pull 每当GitHub将数据发布到此脚本时,git pull就会失败。我们已经尝试将响应存储在一个变量中,并将该变量的内容写入一个文本文件中,这样我们就可以确保命令正在执行——而且确实如此!例如,我们可以执行git log,文本文件将包含git log响应的所有内容。但是执行git pull不起作用 我们的服务器工程师建议使用git安装的完整路径(使用哪个git来查找路径),这就是您在上面看

我们有一个PHP脚本,它只包含以下代码

/usr/bin/git pull

…我们最初使用的是git pull

每当GitHub将数据发布到此脚本时,
git pull
就会失败。我们已经尝试将响应存储在一个变量中,并将该变量的内容写入一个文本文件中,这样我们就可以确保命令正在执行——而且确实如此!例如,我们可以执行
git log
,文本文件将包含git log响应的所有内容。但是执行git pull不起作用

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

当GitHub的post钩子调用我们的脚本,但git pull却不起作用时,为什么我们可以执行git命令,比如
git log

有人知道为什么这不起作用吗


谢谢。

请确保以具有足够权限的用户身份执行代码。您可以通过在试图使用git拉取的脚本中运行
whoami
来确认这一点

您可以发布整个脚本吗?@starlocke“解决方案必须是雇佣新的服务器工程师,对吗?”是的,那将很好:-)@WaynnLue整个脚本?php脚本实际上就是整个脚本的
/usr/bin/git pull
(因为命令是用backticks包装的),php将该行视为shell命令而不是php代码。因此,我们使用PHP触发一个shell命令,PHP脚本由GitHub触发器调用(当我们将更改推送到GitHub时发生)。我们发现我们可以执行
git log
&
git status
,但不能执行
git pull
或类似的命令,如
git fetch
。我想一定有PHP权限问题,但为什么允许
git log
git status
而不允许
git pull
?我不明白的是为什么。。。(a) 这是一个后钩子问题[确切地说是哪个钩子?](b)这是一个php问题,而不是bash脚本问题[钩子脚本通常是bash脚本](c)为什么您的php脚本如此不完整[问题在哪里“在我的例子中,处理php GET/POST的apache用户没有基于git pull创建/修改文件的权限。我从其他人那里看到的解决方案是使用php基于该GET/POST创建一个标志文件,然后使用单独的shell脚本/cron检查该标志,然后启动拉动。