Я установил 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 сделать то же самое.