У меня есть следующая настройка для httpd 2.2 (CentOS 6) с mod_fastcgi
и php-fpm
:
LoadModule fastcgi_module modules/mod_fastcgi.so
<IfModule mod_fastcgi.c>
AddHandler application/x-httpd-php71 .php
Action application/x-httpd-php71 /php71-fcgi
Alias /php71-fcgi /usr/lib/cgi-bin/php71-fcgi
FastCgiExternalServer /usr/lib/cgi-bin/php71-fcgi -socket /var/run/php71.sock -pass-header Authorization
Action application/x-httpd-php72 /php72-fcgi
Alias /php72-fcgi /usr/lib/cgi-bin/php72-fcgi
FastCgiExternalServer /usr/lib/cgi-bin/php72-fcgi -socket /var/run/php72.sock -pass-header Authorization
</IfModule>
<Directory /usr/lib/cgi-bin>
Order allow,deny
Allow from all
</Directory>
Но в httpd 2.4 (CentOS 7) есть mod_proxy_fcgi
и с тех пор mod_fastcgi
нет в наличии у меня нет FastCgiExternalServer
Я пробую примерно так:
AddHandler application/x-httpd-php70 .php
Action application/x-httpd-php70 /php70-fpm virtual
Alias /php70-fpm /php70-fpm
ProxyPassMatch "/php70-fpm" "unix:/var/run/php70.sock|fcgi://localhost"
Action application/x-httpd-php72 /php72-fpm virtual
Alias /php72-fpm /usr/local/php-fpm/php72-fpm
ProxyPass "/usr/local/php-fpm/php72-fpm"
"unix:/var/run/php72.sock|fcgi://localhost"
<Directory /usr/local/php-fpm>
Require all granted
</Directory>
Я знаю, что это неправильно (и не работает ...), но на данный момент я не могу найти (если он есть) способ продолжать использовать AddHandler application/x-httpd-phpXX .php
в .htaccess
для смены версии с CentOS7 / Apache 2.4. Я знаю, что могу использовать:
<FilesMatch "\.php$">
SetHandler "proxy:unix:/var/run/php70.sock|fcgi://localhost/"
</FilesMatch>
но я ищу способ сохранить мой .htaccess таким же.
Немного поискав, я обнаружил, что можно использовать директиву Define:
Я добавил в fcgi.conf (включенный в httpd.conf) следующее:
Define php70 "proxy:unix:/var/run/php70.sock|fcgi://localhost"
И после этого использовал определенный "php70" для AddHandler
в .htaccess
:
AddHandler ${php70} .php
Это самое близкое, что мне удалось найти. Надеюсь, это кому-то поможет.