Linux PHP 运行 shell_exec,无法 git

2018-05-17 10:50:08 +08:00
 sytnishizuiai

/t/455439 昨天发了帖子,coding 无法装钩子,所以就自己随便搞个试试,但发现通过 shell_exec,cd ls mdir 都可以运行,但 git pull 就是不行,我 git 已经公钥装好了 ,把命令在 linux 内直接可以运行,通过 web 却失败。

后来试了网上的很多方法,免密码什么的,还是不行,有什么好的方式吗?

3745 次点击
所在节点    PHP
22 条回复
liuzhaowei55
2018-05-17 10:58:15 +08:00
看一下运行 php 的用户是哪个,是不是你放私钥的那个用户。
sytnishizuiai
2018-05-17 11:03:25 +08:00
@liuzhaowei55 都是 root
KomeijiSatori
2018-05-17 11:04:23 +08:00
报错了么
hteen
2018-05-17 11:12:02 +08:00
做钩子大多是走 ssh 协议, coding 里配置部署公钥

之前用 docker 写钩子, 也是 ssh 权限的问题

后来找了个包操作 Git, 挺方便的

composer require cpliakas/git-wrapper
sytnishizuiai
2018-05-17 11:30:43 +08:00
@KomeijiSatori 没报错,200 通过的
sytnishizuiai
2018-05-17 11:32:44 +08:00
@hteen 嗯 我已经走 ssh 了,公钥也配置好了,服务器里面可以直接 git 了,运行语句 linux 里面直接 php 运行没问题的,就是 web 内运行没效果。
谢谢,我去试试。这功能其实好了也不准备上线,手动更新安全点,就是昨天搞了我一晚上,就是 git 过不了。。。
KomeijiSatori
2018-05-17 11:54:29 +08:00
@sytnishizuiai shell_exec("git xxxxx >> /tmp/git.log") 执行一次然后进 /tmp 看看
widdy
2018-05-17 12:46:23 +08:00
上面不都提过了,很显然是你 web 运行 php 的用户不对吧,www-data 和 root。你 ps 看一下,php 到底是哪个用户运行的。
haoliang
2018-05-17 12:48:39 +08:00
之前用 shell_exec, exec, system ... 也是碰到莫名其妙的问题,图省心后来就一直用 symfony/process
sytnishizuiai
2018-05-17 13:24:31 +08:00
@KomeijiSatori 空的
@widdy 一个进程是 root,其他全是 www,昨天我把运行文件切个 www 用户,也没成功
nosay
2018-05-17 13:34:17 +08:00
很明显,你在 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

然后把生成的公钥部署上去,再试一下
jfcherng
2018-05-17 13:34:18 +08:00
www 的公钥和 root 的公钥是不同的,如果 PHP 是以 www 用户运行,那 shell_exec 里的 git 用的就是 www 的公钥
wangzhi
2018-05-17 13:40:22 +08:00
权限不行
kttde
2018-05-17 13:42:36 +08:00
shell_exec 要带上用户名
sudo -Hu root git pull 或者
sudo -Hu www git pull
defunct9
2018-05-17 16:59:04 +08:00
开 ssh,让我上去试试
vex2
2018-05-17 17:04:35 +08:00
试试
export GIT_SSH=/path/to/key
0x8C
2018-05-17 17:14:41 +08:00
echo shell_exec("whoami")
PHPJit
2018-05-17 17:17:52 +08:00
用 workerman 或者 swoole 吧,然后 pull 一下。
Sanko
2018-05-17 17:20:57 +08:00
路径问题吧
naiba
2018-05-17 17:30:49 +08:00
自动部署吗 试试 github.com/naiba/nocd

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

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

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX