PHP框架使用的是thinkphp6,服務(wù)器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';
}服務(wù)器方面
注意開啟函數(shù)shell_exec,需要開啟網(wǎng)站用戶WWW sudo權(quán)限和免密操作,具體操作
編輯 /etc/sudoers,添加下面兩行

GITLAB方面

輸入你程序的訪問地址,私密授權(quán)碼gitlab在發(fā)送請求的時候會添加到header里,上面程序中可以看到。經(jīng)過半天的測試終于成功,加雞腿。
