2.那么我们须要设置的便是两个地方:

①git项目的webhook设置:

一样平常在我们托管代码的平台,在项目设置里都会有一项webhook设置,里面一样平常只有一条内容,那便是url的设置,这里我设置的是http://www.xxxxx.com/webhook.php

gitphp实现PHPgit项目应用webhook实现主动安排 Docker

(很明显,我在网站的根目录扔了一个webhook.php文件,那么每次我向远端推送代码的时候,我网站的webhook.php文件都会被访问到)

②做事器端(代码运行位置)的钩子文件(webhook.php)设置:

$command = 'cd 代码位置';

$output = shell_exec($command);

$command = 'git pull';

$output = shell_exec($command);

print $output;

我这里便是大略的两句,先cd命令进入到相应目录,然后实行git pull命令

紧张便是shell_exec()函数的利用,这个是php实行命令行的函数,同学们可以自己百度详细先容

这里要特殊解释的是,我之前实行shell_exec()命令的时候,做事器会无相应,卡去世,于是我用一句

$output = shell_exec('ls');

print_r($output);

指令测试,创造也超时,很奇怪,以是一贯搁置来着,也想不明白怎么回事,毕竟就三五行代码,也不知道什么缘故原由让它一贯要求超时。
后来过了两个月我想会不会是当初print的字符串编码问题?于是便有了下面的几句代码:

$encode = mb_detect_encoding($output, array('ASCII','GB2312','GBK','UTF-8'));

$trans = iconv( $encode, "UTF-8",$output);

print $trans;

然后竟然可以实行了。


我也想不起来之前到底是什么缘故原由shell_exec()一贯超时,又碰着的小伙伴可以试试不打印返回内容,或者将打印内容编码处理一下。
不过相信碰着这个恶心问题的小伙伴还是少数。