Назад | Перейти на главную страницу

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());

Затем у меня есть следующий vhost:

<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.

С PHP-FPM SuExec больше не нужен, если вы хотите изменить uid ваших процессов PHP.

Вы можете использовать директивы user и group из файл конфигурации php-fpm сделать то же самое.