将 Apache 切换为使用 Event MPM 和 php-fpm 后,JS/CSS 文件出现 403 禁止访问

将 Apache 切换为使用 Event MPM 和 php-fpm 后,JS/CSS 文件出现 403 禁止访问

(我发现存在几个关于 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 更改为 event MPM,并使用 php-fpm:

1)跑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)取消注释00-mpm.conf中的mpm_event行,注释掉mpm_prefork行

4)

systemctl enable php-fpm
systemctl start php-fpm
systemctl restart httpd

/etc/php-fpm.d/、 和 中www.conf<sitename>.conf都有未注释的行user = apachegroup = apachelisten = 127.0.0.1:9000

我的网站正在运行,但所有 JS 和 CSS 文件现在都无法加载,并出现 403 错误。这些文件的所有者和组都是“apache”。由于 Drupal 使用了大量此类文件,因此我没有检查每个文件的权限值,但至少 755 和 644 都出现了这种情况。我自己今天没有更改任何文件权限。

我认为这与 php.conf 中的代理行有关,但我不知道该怎么办。

答案1

根据 Freddy 的建议,我通过使用 FilesMatch 子句包围SetHandler "proxy:fcgi://127.0.0.1:9000"in来修复此问题:/etc/httpd/conf.d/php.conf

<FilesMatch "\.php$">
    <If "-f %{REQUEST_FILENAME}">
        SetHandler "proxy:fcgi://127.0.0.1:9000"
    </If>
</FilesMatch>

相关内容