php在linux下配制webhook

 exec有3个参数,第一个是要执行的命令,第二个是参数是一个数组,数组的值是由第一个命令执行后生成的,第三个参数执行的状态,0表示成功,其他都表示失败。

 

1.linux 切换用户

果当前是root用户,那么切换成普通用户test用以下命令:
su - test
如果要切换回root用户,那么用以下命令:
su或su -

 

 

2.在 linux 中运行 php 的用户,和 WebHooks 触发时,运行 php 的用户是两个用户

sudo mkdir -p /home/www/.ssh
sudo chown -R www.www /home/www/.ssh
sudo -Hu www ssh-keygen -t rsa

3. sudo -Hu www git clone https://git.coding.net/Tinywan/auto-test.git /home/www/web/hook/auto-test/ --depth=1

初始化克隆的时候要用www用户拉取

 

4.生成公私钥

sudo -Hu www ssh-keygen -t rsa # 请选择 "no passphrase",一直回车下去
#sudo cat /var/www/.ssh/id_rsa.pub # 这个只是针对单个项目的
sudo cat /home/www/.ssh/id_rsa.pub # 查看生成的密钥内容,复制全部

-Hu www 命令: 
-u 代表切换到哪一个用户,这里说的是www 
-H 代表切换HOME环境变量的值,也就是password文件中www用户对应的home目录

 

5.weehook文件内容

<?php

$cmd = "cd /www/wwwroot/nxxxx/nxx/ &&sudo git reset --hard origin/pt && sudo git pull origin pt && sudo git pull --all && sudo git pull origin pt 2>&1";

$res = array();
exec($cmd,$res);

var_dump($res);

 

6.原因

1、我们服务器上的web文件,大多是用户和用户组都是www,所以平时运行那些PHP文件,也都是www用户运行的。那么我们就必须以www用户来吧代码仓库clone下来,然后以www的身份去生成ssh密钥
ssh-keygen -t rsa -C "your_email@youremail.com",生成之后记得把公钥放在github里的项目配置里。

要以www用户创建公私钥才能hook成功。

 

转:https://blog.csdn.net/qq756684177/article/details/81335649

https://www.v2ex.com/amp/t/455526

https://www.cnblogs.com/wdw31210/p/11211978.html

https://www.cnblogs.com/wdw31210/p/11009968.html

 

 

 

 

posted @   炽橙子  阅读(563)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
历史上的今天:
2018-11-09 .bat 文件的使用
2018-11-09 简单的数据库命令
2018-11-09 查看mysql的安装路径,配制mysql的环境变量。
2018-11-09 第一篇博客
点击右上角即可分享
微信分享提示