Я пытаюсь перейти с mod_php на php-fpm с помощью mod_proxy_fcgi.
После установки необходимых модулей я попытался выполнить уведомление, полученное во время установки:
По умолчанию PHP 7.2 FPM не включен.
Чтобы включить PHP 7.2 FPM в Apache2, выполните:
a2enmod proxy_fcgi setenvif
a2enconf php7.2-fpm
После этого и перезапуска Apache мой веб-сайт предоставил мне файлы php в виде обычного текста.
Только после добавления Включить conf-enabled / php7.2-fpm. conf
в файл конфигурации моего виртуального хоста (после настройки letsencrypt у меня есть два для всех моих виртуальных хостов, и его нужно было добавить на оба).
Я немного не хочу этого делать - в будущем php7.2-fpm.conf
, вероятно, переместится в php7.3-fpm.conf
, и я должен снова добавить сенсорные все файлы конфигурации.
Это содержимое php7.2-fpm.conf
:
# Redirect to local php-fpm if mod_php is not available
<IfModule !mod_php7.c>
<IfModule proxy_fcgi_module>
# Enable http authorization headers
<IfModule setenvif_module>
SetEnvIfNoCase ^Authorization$ "(.+)" HTTP_AUTHORIZATION=$1
</IfModule>
<FilesMatch ".+\.ph(ar|p|tml)$">
SetHandler "proxy:unix:/run/php/php7.2-fpm.sock|fcgi://localhost"
</FilesMatch>
<FilesMatch ".+\.phps$">
# Deny access to raw php sources by default To re-enable it's recommended to enable access to the
# files only in specific virtual host or directory
Require all denied
</FilesMatch>
# Deny access to files without filename (e.g. '.php')
<FilesMatch "^\.ph(ar|p|ps|tml)$">
Require all denied
</FilesMatch>
</IfModule>
</IfModule>
Мне интересно, есть ли способ изменить поведение механизма php-fpm, не затрагивая все файлы конфигурации моего виртуального хоста?
Я думаю, вы должны использовать только параметр ExecCGI на своих виртуальных хостах.
Пример:
<VirtualHost *:80>
DocumentRoot /var/www/html
Protocols h2 h2c http/1.1
<Directory /var/www/html>
Options -Indexes +FollowSymLinks +MultiViews +ExecCGI
AllowOverride All
Require all granted
</Directory>
</VirtualHost>