(我发现存在几个关于 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 = apache
和group = apache
和listen = 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>