php与githook实现自动更新

简介: git系统仓库一般都会支持这个hook配置,在发生事件的时候触发执行,可以是https推送等通知形式。 我们使用gitee+php来达到自动更新项目代码的需求。

githook


git系统仓库一般都会支持这个hook配置,在发生事件的时候触发执行,可以是https推送等通知形式。 我们使用gitee+php来达到自动更新项目代码的需求。


用户组和权限


  • php 是以 www 用户组运行在系统上的,


如果我们使用php的函数 shell_exec("cd /www/wwwroot/xxxx && sudo git pull origin master"); 来执行的话会返回NULL。执行失败


  • git 属于 root 用户组


在php中使用git会因为权限而失败 解决方案: 编辑/etc/sudoers文件,如下: (原文博客https://blog.siammm.cnhttps://blog.siammm.cn/archives/256)


root    ALL=(ALL)       找到这一行,在下方加入一行:
www     ALL=NOPASSWD:/usr/bin/git     这一行的意思是让www用户组可以不用密码使用git


此时可以使用git客户端。如下可以正常返回,但是执行pull的时候还是返回NULL


var_dump(shell_exec("git version"));


涉及文件夹权限,没有权限更改文件


  • 可以将文件夹设置777权限 或者归属为www用户组
  • 在php shell_exec 执行中加入sudo


<?php
$json =  file_get_contents("php://input");
$array = json_decode($json , true);
if (isset($array['ref']) && $array['total_commits_count']>0 && isset($array['password']) && $array['password'] == 'xxxxxxx'){
    $res = shell_exec("cd /www/wwwroot/default/testHook/yanpay && sudo git pull origin master");
    var_dump( $res) ;
}
目录
相关文章
|
缓存 移动开发 NoSQL
php结合redis实现高并发下的抢购、秒杀功能的实例
php结合redis实现高并发下的抢购、秒杀功能的实例
247 0
|
PHP
github与gitee代码自动同步到服务器实现PHP项目自动部署webhooks
github与gitee代码自动同步到服务器实现PHP项目自动部署webhooks
502 0
github与gitee代码自动同步到服务器实现PHP项目自动部署webhooks
|
网络协议 Linux 网络安全
php实现websocket实时消息推送
php实现websocket实时消息推送
507 0
php实现websocket实时消息推送
|
PHP
php实现数字格式化,数字每三位加逗号的功能函数169856420=&gt;169,856,420
php实现数字格式化,数字每三位加逗号的功能函数169856420=&gt;169,856,420
207 0
|
PHP
PHP实现Workerman实例 高性能PHP Socket即时通讯框架
PHP实现Workerman实例 高性能PHP Socket即时通讯框架
403 0
|
消息中间件 PHP Windows
PHP实现php-amqplib/php-amqplib实例RabbitMq
PHP实现php-amqplib/php-amqplib实例RabbitMq
225 0
|
XML 移动开发 JSON
PHP使用yansongda/pay实现支付宝和微信的支付
PHP使用yansongda/pay实现支付宝和微信的支付
1041 0
|
NoSQL PHP Redis
PHP结合redis实现点赞功能
PHP结合redis实现点赞功能
137 0
|
消息中间件 缓存 JSON
PHP实现think-queue介绍
PHP实现think-queue介绍
413 0
|
PHP
php实现定时任务hellogerard/jobby
php实现定时任务hellogerard/jobby
142 0