PHP-FPM SuExecUserGroup 不起作用

PHP-FPM SuExecUserGroup 不起作用

我已经通过以下方式安装了 php、apache 和 fastcgi_handler:

emerge dev-lang/php www-apache/mod_fastcgi_handler

我设法通过更新 /etc/apache2/modules.d/70_mod_php5.conf 中的相关行使其工作

到:

# AddHandler application/x-httpd-php .php .php5 .phtml
# AddHandler application/x-httpd-php-source .phps
AddHandler fcgi:/var/run/php-fpm.socket .php .php5

并将 /etc/conf.d/apache2 更改为

APACHE2_OPTS="-D DEFAULT_VHOST -D INFO -D SSL -D SSL_DEFAULT_VHOST -D SUEXEC -D LANGUAGE -D PHP5 -D FASTCGI_HANDLER"

在我的文档根目录中,我有以下文件来验证安装:

<?php
echo '<pre>';
var_dump(exec('whoami'));
var_dump(php_sapi_name());

然后我有以下虚拟主机:

<IfDefine DEFAULT_VHOST>
        <VirtualHost localhost:80>
                ServerName local.testdomain.com
                ServerAlias local.testdomain.com
                SuExecUserGroup foobar foobar
                DocumentRoot "/home/foobar/workspace/local.testdomain.com"
                <Directory "/home/foobar/workspace/local.testdomain.com">
                        Options Indexes FollowSymLinks
                        AllowOverride All
                        Order allow,deny
                        Allow from all
                </Directory>
        </VirtualHost>
</IfDefine>

导致:501 错误

[Wed Jul 10 01:52:10 2013] [error] [client ::1] (13)Permission denied: access to / denied (filesystem path '/home/foobar/workspace/') because search permissions are missing on a component of the path

将文档根目录移到用户目录之外,test.php 似乎可以正确执行,但是我得到以下结果:

string(6) "nobody"
string(8) "fpm-fcgi"

我期望它是:

string(6) "foobar"
string(8) "fpm-fcgi"

我的假设是,如果我能让 SuExec 正常工作,它就可以毫无问题地遍历用户的目录。

根据我的推论,这证实了 PHP-FPM 运行正常,但是这个指令:“SuExecUserGroup foobar foobar“没有。SuExec 肯定在工作,因为我在日志中看到了以下行:

[Wed Jul 10 02:09:47 2013] [notice] suEXEC mechanism enabled (wrapper: /usr/sbin/suexec)

我希望有人能指出我遗漏了什么,以及如何解决它。

提前致谢。

顺便说一下,我正在使用 Gentoo。

答案1

使用 PHP-FPM,如果您想更改 PHP 进程的 uid,就不再需要 SuExec。

您可以使用指令“用户”和“组”php-fpm 配置文件做同样的事情。

相关内容