如何使php文件执行shell命令

时间:2013-06-02 09:48:31

标签: php shell-exec git-pull

我创建了一个php文件,使用以下代码获取github上托管的存储库中的任何更改:

<?php
`git pull`;
?>

我在我的github设置中将这个php脚本的URL(在我的服务器上托管)作为服务挂钩url。所以每当我把东西推到我的github存储库时,它应该向这个php文件发出一个post请求。然而,这似乎不起作用。

github帮助页面说他们向有关网址发送了一个帖子请求并附带了一些paylod。那么脚本是如何执行的?

在ssh进入我的网站后,当我从bash提示符中git pull时,它会提取所有更改。 此脚本的文件权限当前设置为755。

我需要对php作为shell脚本执行此文件进行哪些更改?

修改 - 我也尝试更改相应文件夹的所有权,如下所示:

chown -R apache:apache Test

因此,当对url发出post请求时,脚本将作为我猜的www-data用户执行,因此脚本可以执行。但是当我尝试这样说时,我收到了一个错误:

chown: `apache:apache': invalid group

1 个答案:

答案 0 :(得分:0)

尝试PHP exec()函数

 string exec ( string $command [, array &$output [, int &$return_var ]] )

命令 =将执行的命令

输出 =如果输出参数存在,那么指定的数组将被命令的每一行输出填充。尾随空格(例如\ n)不包含在此数组中。请注意,如果数组已包含某些元素,则exec()将附加到数组的末尾。如果您不希望函数附加元素,请在将数组传递给exec()之前调用数组上的unset()。

return_var =如果return_var参数与输出参数一起出现,则执行命令的返回状态将写入此变量。

来源:http://php.net/manual/en/function.exec.php