从浏览器调用PHP exec失败但从CLI调用失败

时间:2012-10-27 05:32:57

标签: php git webhooks

我有一个简单的PHP脚本:

exec('git pull origin master', $shell_output, $output);
print_r($shell_output);
print_r($output)

当我通过CLI php git.php调用它时,它运行正常。我得到了预期的输出,返回值为0.当我通过Web浏览器访问该页面时,它失败并返回值为1.

我已将文件权限设置为777,并确保php.ini不会阻止exec()功能。

2 个答案:

答案 0 :(得分:3)

CLI使用当前登录的用户(您)凭据运行,它很可能与Web服务器进程使用的不同。执行exec('whoami')等验证。

答案 1 :(得分:3)

我能够在Ates Goral的帮助下解决这个问题。

为了调试这个问题,我跑了:

sudo -u www-data php git.php

了解在www-data用户下运行时脚本的行为方式。有两个问题:

www-data没有自己的公钥。我创建了一个并将其添加到github仓库。 .git无法读取www-data文件夹。这是通过chown目录修复的,以便为I和apache都属于的组www-data授予权限。

相关问题