oran 发表于 2015-12-31 14:12:17

lnmp1.2 使用Git的webhook 调用shell_e!x!e!c的问题。

应用场景:Conding的Git仓库有一个功能,就是每次push的时候可以调用webhook通知到url。
所以我做了一个php文件:
$pwd = getcwd();

$command = '/home/wwwroot/pm.sxteam.com/test/git-puller.sh';
//$command = 'whoami';
$output = shell_e!x!e!c($command);
print $output;
echo $pwd;
?>


/home/wwwroot/pm.sxteam.com/test/git-puller.sh 的内容:用于 git pull更新仓库的。
cd /home/wwwroot/pm.sxteam.com/test && /usr/local/git/bin/git pull && cd -
echo "OK"


访问这个php文件Url执行命令 whoami的时候,可以得到输出为www说明php是使用www这个用户执行的。

现在的问题是这样:
通过访问url,通过shellexec执行 git-puller.sh。可以得到输出 OK 。但是git pull 命令没有执行,没有反应,没有提示。
然后我在ssh里执行如下命令,却是可以执行成功git命令的。

通过命令 sudo -u www php git.php
执行结果 “Already up-to-date. ”出现这个说明git命令是执行了的。

求助老大,为什么通过 命令行 使用www用户执行php就可以成功,而直接通过浏览器访问就不行呢?

oran 发表于 2015-12-31 14:12:51

shell_e!x!e!c   因为论坛敏感词屏蔽,所以我加了 叹号

licess 发表于 2015-12-31 21:55:09

看一下文件是否有执行权限和文件属主属组信息

oran 发表于 2016-1-1 10:12:48

文件都是777权限,所属www用户和www组。

licess 发表于 2016-1-1 19:45:11

看一下你这个目录下的git的命令的权限
页: [1]
查看完整版本: lnmp1.2 使用Git的webhook 调用shell_e!x!e!c的问题。