git push 钩子的实现

1.创建一个网址可以访问的php

(例如:http://www.baidu.com/php.php

问题

//这种看着没问题,但是不好使
system('cd /opt/www/chat &&  git pull');

办法

<?php
//执行命令:cd到目标文件,git pull
system('cd /opt/www/chat &&  git pull 2>&1');

 

2.查看执行用户

问题

执行上述文件后会一直提示你密钥验证失败,事实上你在命令行执行一点问题没有

原因

你在命令行中运行的是在root用户下,
但是执行php文件的时候是哪个用户在执行?

php

<?php
exec("cd ~ && cd - && cd -", $output);//跳到用户目录,再回刚刚的目录,然后跳到用户目录
print_r($output);//输出(实际上输出的是你的php文件目录和运行PHP脚本的用户根目录)

php运行结果分析

正常情况下应该输出类似/root或者/home/git这种看的懂得用户
但是实际上我的输出是/var/lib/php/fpm
​
what?
​
php的执行目录是哪个用户呢?
我们查看passwd并没有发现疑似用户。。。
(经过猜测,我肯定他是php-fpm用户,别问我怎么猜到的)

 

3.模拟浏览器

知道用户后就简单了
我们直接进入该用户就好
su php-fpm
(注:会报一个无法进入该用户的错,百度一下修改权限)
​
cd ~
​
ls -ah

4.创建SSH Key(在php-fpm用户下)

这里就不多说了

更新项目后再次执行git pull(在php-fpm用户下)

又报错。。。
别担心,看看又是权限的问题
直接暴力777(将你的项目文件权限改为777)
执行,成功!!!

5.最后

添加你的php文件链接(例如:http://www.baidu.com/php.php)
到推送事件中(例如:gitlab后台的setting->Integrations)

大功告成!!!

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值