Bitbucket 上的简单 php post 挂钩不起作用

Simple php post hook on Bitbucket doesn't work

我在 bitbucket 上遇到 post 挂钩问题。这是一个简单的 php 脚本,只是一个概念证明:

<?php `cd /etc/puppet/environments/production/modules && git pull`;?>

在日志文件中,我可以看到 Bitbucket 成功了:

131.103.20.165 - - [27/May/2015:09:15:59 -0700] "POST /githubupdate.php HTTP/1.1" 200 70 "-" "Bitbucket.org"

但是什么也没有发生。如果我尝试 运行 作为用户 apache 手动编写脚本,它工作正常:

sudo -u apache php /var/lib/foreman/public/githubupdate.php 
remote: Counting objects: 3, done.
remote: Compressing objects: 100% (2/2), done.
remote: Total 3 (delta 1), reused 0 (delta 0)
Unpacking objects: 100% (3/3), done.
From bitbucket.org:ucd-itservices/puppet-modules
   c083115..2ce4b73  production -> origin/production

我做错了什么?

谢谢!

检查用户

请检查网络服务器用户是否真的是apache

<?php
echo exec('whoami');
?>

如果不是,请检查用户是否有足够的权限。

SSH 密钥

Bitbucket 的 SSH 密钥(部署密钥)是否可用,或者您是否仅使用通过 SSH 的密钥转发?

检查输出

请检查命令的输出:

<?php
echo nl2br(shell_exec('cd /etc/puppet/environments/production/modules && git pull');
?>

错误日志

请检查任何 Apache/PHP 错误日志是否有任何错误。