PHP框架使用的是thinkphp6,服务器centos7.5,宝塔面板。
程序方面
public function gitPull()
{
$path = $this->app->getRootPath();
$token = "xxxxxxxxxxx";
$header = $this->request->header('x-gitlab-token');
if (empty($header) || $header !== $token) {
$a = "-----------------ERROR---------------------" . PHP_EOL;
file_put_contents('git_log.txt',$a,FILE_APPEND);
return 'error1';
}
$time = date('Y-m-d H:i:s');
$a = "-----------start----------{$time}-----------------------------------------". PHP_EOL;
$cmd = "cd {$path} && git reset --hard";
$a .= shell_exec($cmd);
$cmd = "cd {$path} && sudo git pull 2>&1";
$a .= shell_exec($cmd);
$cmd = "cd {$path} && sudo chown -R www:www * 2>&1";
$a .= shell_exec($cmd);
$time = date('Y-m-d H:i:s');
$a .= "-----------End----------{$time}-----------------------------------------" . PHP_EOL. PHP_EOL. PHP_EOL;
file_put_contents('git_log.txt',$a,FILE_APPEND);
return 'ok1';
}服务器方面
注意开启函数shell_exec,需要开启网站用户WWW sudo权限和免密操作,具体操作
编辑 /etc/sudoers,添加下面两行

GITLAB方面

输入你程序的访问地址,私密授权码gitlab在发送请求的时候会添加到header里,上面程序中可以看到。经过半天的测试终于成功,加鸡腿。
