前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >php与githook实现自动更新

php与githook实现自动更新

作者头像
宣言言言
发布2020-03-27 08:30:54
8990
发布2020-03-27 08:30:54
举报
文章被收录于专栏:宣言(Siam)博客

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文件,如下:

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

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

代码语言:javascript
复制
var_dump(shell_exec("git version"));

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

  • 可以将文件夹设置777权限 或者归属为www用户组
  • 在php shell_exec 执行中加入sudo
代码语言:javascript
复制
<?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) ;
}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • githook
    • 用户组和权限
    相关产品与服务
    访问管理
    访问管理(Cloud Access Management,CAM)可以帮助您安全、便捷地管理对腾讯云服务和资源的访问。您可以使用CAM创建子用户、用户组和角色,并通过策略控制其访问范围。CAM支持用户和角色SSO能力,您可以根据具体管理场景针对性设置企业内用户和腾讯云的互通能力。
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档