Как включить suexec на виртуальном хосте?

Я использую Apache2.2 и FastCgi для запуска кода PHP (с php-fpm).

Мой конфиг FCGI следующий и работает нормально:

User apache
Group apache

LoadModule fastcgi_module modules/mod_fastcgi.so

FastCgiIpcDir /var/run/mod_fastcgi
FastCgiConfig -idle-timeout 20 -maxClassProcesses 1

AddHandler php-script .php
Action php-script /php5-fcgi
AddType application/x-httpd-php .php

<Location "/php5-fcgi">
Order Deny,Allow
Deny from all
Allow from env=REDIRECT_STATUS
</Location>

Мой виртуальный хост настроен следующим образом и тоже отлично работает:

<VirtualHost XX.XX.XXX.XXX:80>
DocumentRoot "/srv/apache/test"ServerName my.domain.com
ErrorLog  /srv/apache/test/logs/test.log
DirectoryIndex index.php
LogLevel debug

<Directory "/srv/apache/test/www">
Options +Indexes
Order allow,deny
Allow from all
</Directory>


Alias /php5-fcgi /var/www/cgi-bin/test/php.fcgi
FastCgiExternalServer /var/www/cgi-bin/test/php.fcgi -socket /var/run/php5-fpm.sock -pass-header Authorization -idle-timeout 3600

<Directory "/var/www/cgi-bin/test">
Options +ExecCGI
SetHandler fastcgi-script
Order Deny,Allow
Allow from env=REDIRECT_STATUS
</Directory>

</VirtualHost>

Мой phpinfo () на моей тестовой странице отображается. Теперь я бы хотел, чтобы он работал с модом Apache Suexec. Поэтому я добавляю следующие строки в конфигурацию apache:

# Into my virtualhost config
SuexecUserGroup www-test www-test

# Into my fastcgi config
FastCgiWrapper On

Тогда я чоун www-test пользователь мой скрипт fcgi (/var/www/cgi-bin/test/php.fcgi) и мой корень документа (/srv/apache/test).

Я перезапускаю службы httpd и php-fpm, обновляю свою тестовую страницу и получаю ошибку 500 со следующими журналами:

==> /var/log/httpd/error_log <==
suexec failure: could not open log file
fopen: Permission denied
[Tue Nov 10 21:35:48 2015] [warn] FastCGI: (dynamic) server "/var/www/cgi-bin/test/php.fcgi" (pid 29704) terminated by calling exit with status '1'
[Tue Nov 10 21:35:53 2015] [warn] FastCGI: (dynamic) server "/var/www/cgi-bin/test/php.fcgi" (uid 505, gid 506) restarted (pid 29711)

==> /srv/apache/test/logs/test.log <==
[Tue Nov 10 21:36:05 2015] [error] [client 90.XXX.30.XX] FastCGI: comm with (dynamic) server "/var/www/cgi-bin/test/php.fcgi" aborted: (first read) idle timeout (20 sec)
[Tue Nov 10 21:36:05 2015] [error] [client 90.XXX.30.XX] FastCGI: incomplete headers (0 bytes) received from server "/var/www/cgi-bin/test/php.fcgi"

У вас есть идея конфигурации, которую я могу пропустить?


Редактировать: я отредактировал одну из моих директив Vhost следующим образом:

 FastCgiExternalServer /var/www/cgi-bin/test/php.fcgi -socket /var/run/php5-fpm.sock -pass-header Authorization -user www-test -group www-test

Теперь моя тестовая страница работает, но я выполняю whoiam команда с php, и я получаю пользователя apache вместо моего пользователя Suexec (www-test).

Есть ли у вас какие-либо представления о причине, по которой мой конфиг Suexec не работает?

1

Решение

PHP FPM должен быть настроен на использование определенного пользователь.

Убедитесь, что значение в вашей конфигурации пула для user соответствует пользователю Unix, для которого вы хотите выполнить PHP. Обычно по умолчанию www-data но это могло измениться www-user в зависимости от того, как вы скомпилировали PHP.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]