如何使php文件执行shell命令


How to make a php file execute shell commands

我创建了一个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