我创建了一个php文件来获取github上托管的存储库中的任何更改,使用以下代码:
<?php
`git pull`;
?>
我把这个php脚本的url(托管在我的服务器上)作为我的github设置中的服务钩子url。因此,每当我将某些内容推送到github存储库时,它应该向这个php文件发出post请求。然而,这似乎不起作用。
github帮助页面说,他们发送一个post请求到相关的url与一些有效负载。脚本是如何执行的呢?
当我在ssh登录到我的站点后从bash提示符执行git pull
时,它会提取所有更改。此脚本的文件权限当前设置为755。
我需要做什么改变php执行这个文件作为一个shell脚本?
编辑 -我还尝试更改相应文件夹的所有权,如下所示:
chown -R apache:apache Test
所以当一个post请求是对url,脚本执行作为www-data用户我猜,因此脚本可以执行。但是当我尝试这样做时,我得到了一个错误:
chown: `apache:apache': invalid group
试试PHP的exec()函数
string exec ( string $command [, array &$output [, int &$return_var ]] )
command =要执行的命令
output =如果存在output参数,则指定的数组将被来自命令的每一行输出填充。该数组中不包括尾随空格,如'n。注意,如果数组已经包含一些元素,exec()将追加到数组的末尾。如果不希望函数附加元素,在将数组传递给exec()之前,请先对数组调用unset()。
return_var =如果与输出参数一起存在return_var参数,则执行命令的返回状态将被写入该变量。
来源:http://php.net/manual/en/function.exec.php