3

我有一个简单的 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()功能。

4

2 回答 2

3

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

于 2012-10-27T05:37:45.083 回答
3

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

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

sudo -u www-data php git.php

查看脚本在www-data用户下运行时的行为。有两个问题:

www-data没有自己的公钥。我创建了一个并将其添加到 github 存储库中。并且该.git文件夹无法被www-data. 这是通过chowning 目录以授予www-data我和 apache 都属于的组的权限来解决的。

于 2012-10-27T05:57:18.843 回答