我在第一次使用使用coding的WebHook自动部署时,因为我用的PHP编写脚本执行shell_exec,按照网上查询的资料部署好后发现脚本执行git pull出现如下问题:
我的脚本是这样编写的,也是网上别人那里看来的,有很多版本,目前觉得这个是最可靠的,也是思路最清晰的。
<?php
error_reporting(1);
$web_path = '/www/wwwroot/wcfadmin';
// Coding新版本的webhook若是设置了token,Coding则对每个请求进行了哈希签名
// 这个签名会放在请求头 X-Coding-Signature,在服务器端我们需要进行签名解析才能拿到真正数据
// token验证令牌,与Coding webhook上设置的一致,用于与Coding进行身份验证,防止恶意提交代码
$token = 'liuxiaojing';
// 从请求头中获取签名
$signature = $_SERVER['HTTP_X_CODING_SIGNATURE'];
// 接收Coding post传递的参数
$json_post = file_get_contents('php://input');
// 进行签名解析
$sha1 = hash_hmac("sha1",$json_post,$token);
$calculate_signature = 'sha1='. $sha1;
$fs and fclose($fs);
// 进行身份验证
if ($calculate_signature !== $signature) {
exit(json_encode(['error'=>'error request']));
}
// shell_exec()即PHP用于执行系统命令的函数
/