(Я вижу, что есть несколько существующих вопросов об ошибках 403 и одной или двух остальных частях моей конфигурации, но ничего, что, похоже, не соответствует моей конкретной ситуации, которую я видел до сих пор, и я не уверен, как действовать в результате.)
У меня есть промежуточный сайт на сервере CentOS 7 (версия CentOS Linux 7.6.1810 (Core)) с Apache / 2.4.6. Корень сайта /var/www/<sitename>/web-ssl
. Это сайт Drupal 8.6.12, PHP 7.1.27.
Сегодня я выполнил следующие шаги, чтобы изменить apache с использования prefork MPM на событие MPM и использовать php-fpm:
1) run (побежал) yum install php71w-fpm
2) добавил SetHandler "proxy:fcgi://127.0.0.1:9000"
к /etc/httpd/conf.d/php.conf
(полное содержание моего php.conf выглядит следующим образом):
#
# Cause the PHP interpreter to handle files with a .php extension.
#
AddHandler php7-script .php
AddType text/html .php
SetHandler "proxy:fcgi://127.0.0.1:9000"
#
# Add index.php to the list of files that will be served as directory
# indexes.
#
DirectoryIndex index.php
#
# Uncomment the following line to allow PHP to pretty-print .phps
# files as PHP source code:
#
#AddType application/x-httpd-php-source .phps
#
# Apache specific PHP configuration options
# those can be override in each configured vhost
#
php_value session.save_handler "files"
php_value session.save_path "/var/lib/php/session"
php_value soap.wsdl_cache_dir "/var/lib/php/wsdlcache"
3) Прокомментировал строку mpm_event в 00-mpm.conf, закомментировал строку mpm_prefork
4)
systemctl enable php-fpm
systemctl start php-fpm
systemctl restart httpd
В /etc/php-fpm.d/
, в обоих www.conf
и <sitename>.conf
У меня есть раскомментированные строки user = apache
и group = apache
и listen = 127.0.0.1:9000
.
Мой сайт работает, но все файлы JS и CSS не загружаются с ошибкой 403. Владелец и группа этих файлов - "apache". Поскольку Drupal использует огромное количество этих файлов, я не проверял значения разрешений для каждого отдельного файла, но это происходит как минимум с 755 и 644. Я сам сегодня не менял никаких разрешений для файлов.
Я думаю, это связано с прокси-строкой в php.conf, но я понятия не имею, что с этим делать.
Я смог исправить это по предложению Фредди, окружив SetHandler "proxy:fcgi://127.0.0.1:9000"
в /etc/httpd/conf.d/php.conf
с предложением FilesMatch:
<FilesMatch "\.php$">
<If "-f %{REQUEST_FILENAME}">
SetHandler "proxy:fcgi://127.0.0.1:9000"
</If>
</FilesMatch>