2.那么我们需要设置的就是两个地方:
①git项目的webhook设置:
一般在我们托管代码的平台,在项目设置里都会有一项webhook设置,里面一般只有一条内容,那就是url的设置,这里我设置的是http://www.xxxxx.com/webhook.PHP
(很明显,我在网站的根目录扔了一个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()一直超时,又遇到的小伙伴可以试试不打印返回内容,或者将打印内容编码处理一下。不过相信遇到这个恶心问题的小伙伴还是少数。
原文地址:https://www.jb51.cc/php/1211106.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。