0

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

<?php
`git pull`;
?>

我在我的 github 设置中提供了这个 php 脚本(托管在我的服务器上)的 url 作为服务挂钩 url。因此,每当我将某些内容推送到我的 github 存储库时,它都应该向这个 php 文件发出 post 请求。但是,这似乎不起作用。

github帮助页面说他们用一些paylod向相关的url发送了一个post请求。那么脚本是如何执行的呢?

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

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

编辑- 我也尝试像这样更改相应文件夹的所有权:

chown -R apache:apache Test

因此,当对 url 发出 post 请求时,脚本会以我猜的 www-data 用户身份执行,因此脚本可以执行。但是当我尝试执行此操作时出现错误:

chown: `apache:apache': invalid group
4

1 回答 1

0

尝试 PHP exec() 函数

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

command = 将要执行的命令

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

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

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

于 2013-06-02T09:51:45.193 回答