Git POST webhook shell_exec

时间:2013-03-06 10:09:16

标签: php linux git

我有一个脚本在PHP中运行以下shell_exec cmd。

echo shell_exec('cd /var/www/Library/Laravel/ ; git pull bitbucket master ; 2>&1');

这是由webhook服务调用的,而我想要做的只是在每次推送时都不得不拉入这个开发环境。

但是,调用此路由时,我不会收到任何输出错误或任何内容。任何人都可以建议为什么会这样吗?

我从error_log中得到了回应 - >

error: cannot open .git/FETCH_HEAD: Permission denied

我将apache用户添加到git,现在我收到以下错误

Could not create directory '/var/www/.ssh'.
Host key verification failed.
fatal: The remote end hung up unexpectedly

1 个答案:

答案 0 :(得分:0)

我在这里看到一些问题:

1)你的执行线" ...; git pull bitbucket master; 2 - ;&安培; 1"应该是" ... git pull bitbucket master 2>& 1" - 无关的分号可能会阻止您看到标准错误输出。

2)你发现了所有权问题,所以......

3)我猜你有一个" ssh"基于git的URL。第一次以用户身份运行SSH时,它将尝试验证主机密钥(另一方的SSH ID)。如果该工具不是交互式的并且您尚未接受该密钥,则SSH的默认行为将失败。或者,如果您已经接受了密钥,但您已经改变了,那么您会看到相同的行为。您将以不同方式解决这两个不同的问题。

"对"解决这个问题的方法是手动运行命令(作为具有相应HOME变量集的用户)并手动接受密钥,以便随后的命令将只是工作"。

另一种可能性是覆盖SSH的默认行为 - 请参阅" StrictHostKeyChecking"的文档。 SSH选项。你可以做一些黑客在命令行上传递它或创建一个指定选项的〜/ .ssh / config文件。 (注意:除非您了解安全隐患,否则我建议使用第一个解决方案,而不是此解决方案。)

最后,我怀疑您还需要设置SSH私钥,以便您也可以像该用户一样提取。