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

403 Запрещено для файлов JS / CSS после переключения Apache на использование Event MPM и php-fpm

(Я вижу, что есть несколько существующих вопросов об ошибках 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>