美文网首页
webHooks PHP 自动部署

webHooks PHP 自动部署

作者: 哈哈新开张 | 来源:发表于2021-06-08 17:57 被阅读0次

    我的系统是Centos8 PHP7

    首先说明,因为要修改PHP的 disable_functions 配置项,将使PHP可以执行本地Linux命令,所以不能用于生产环境.原理就是有人push代码时,会自动向你配置的URL中发送一个POST请求,请求地址是你自己的,你就可以为所欲为了.

    1 在gitlab(不管是自己搭建的还是github,或是码云都可以的,我是自己搭建的gitlab)webhooks中配置

    image.png

    ,可以带着token自己写下验证

    2 PHP代码

    exec("cd /var/www/nav && sudo /usr/bin/git pull");
    

    3 如果没什么意外,这个是不会成功的,主要是权限问题,因为PHP的用户在执行sudo时,是需要输入密码才可以的,我们只需要把php的执行用户在执行sudo的git命令时,设置为无需输入密码即可

    1 看看PHP的执行用户是谁,如图


    image.png

    ,每个人的安装目录不一样,这里只告诉你修改哪个文件
    2 在 /etc/sudoers 增加一行

    nobody  ALL=NOPASSWD:/usr/bin/git
    默认情况下, 这个文件只读,修改属性后记得改回来,如下命令
    chmod u+w /etc/sudoers(chmod u-w /etc/sudoers)
    

    3 还有一点,修改php.ini 中disable_functions 将exec,system删掉。或者将disable_functions注释掉,也是比较危险的一步,php可以执行linux命令了

    相关文章

      网友评论

          本文标题:webHooks PHP 自动部署

          本文链接:https://www.haomeiwen.com/subject/nqejeltx.html