Github准备工作1.在仓库设置中添加webhooks以私有仓库为例:1.创建仓库后,点击设置。设置webhooks访问路径:以我自己的项目为例,框架使用的是tp6。在public/下创建一个名为basic.php的文件,目的是当代码推送到服务器时,github可以访问并执行一个文件。该文件用于执行shell命令,触发链接时自动执行该文件中的命令,从而实现git自动拉取。2.测试链接是否有效,文件是否被访问过。如上图所示,当出现绿色?时,表示链接已被访问,当出现红色??标记时,表示文件未被访问。使用它来解决链接问题或代码问题。[x]至此Github方面已经完成。PHP代码部署1.添加一个钩子文件执行shell命令以下是一些内联代码片段。>b.log');//PHP函数执行git命令$res_log='------------------------'.PHP_EOL;$res_log.='in'.日期('Y-m-dH:i:s')。'到'。$内容['存储库']['名称'].'项目'。$内容['参考']。'分支推送'.$res;file_put_contents("git-webhook.txt",$res_log,FILE_APPEND);//将每次拉取信息追加到日志中}?>[x]至此,phpshell部分命令完成,可以根据需要自定义以不同项目调试的需要。常见错误处理1.php.ini文件中没有禁用shell。这个错误比较常见,调试的时候也很容易发现,这里不再赘述。解决方法删除php.ini中的shell_exec,重启服务。2..git权限问题,将.git/目录下的文件权限组改成www一般不会出现。当出现权限错误时,建议检查文件目录是否为您设置的权限组。如果没有,可以使用命令修改文件权限组//以www用户组为例chown-Rwww:www文件/3。逐步排查权限组问题。当确定前面的过程没有问题,仍然没有自动拉取代码时,手动执行上面的shell,如果代码拉取成功,就可以排除shell问题。打开日志记录。如果日志记录中的内容为空,可以尝试用新版本替换旧版本。4.出现类似的错误。Hostkeyverificationfailed.^Mfatal:Couldnotreadfromremoterep......因为权限密钥有问题,所以连接github的公钥还没有在www权限组中创建。这里笔者就采用这种方法来解决。如果还有其他解决方案,欢迎私信或者评论区留言。在vim中打开/etc/sudoers,在rootwww下添加一行执行sudo权限无密码5.完成,至此你的webhook可以工作了,修改文件并提交,查询日志。本地环境centos+php7.3+nginx
