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

原文地址:https://www.cnblogs.com/ygyy/p/11827587.html