SDB:Apache FastCGI 和 PHP-FPM 配置
为什么选择 PHP-FPM
php-fpm 的配置比 apache2-mod_php 复杂,但它提供了一些优势
- 支持事件模式 (mod_php 仅支持预fork模式)
- 支持 HTTP2
- 更好的性能
操作方法
禁用 apache2-mod_php8
sudo a2dismod php8
安装并启用 apache2-mod_fcgid 和 php8-fpm
sudo zypper install apache2-mod_fcgid php8-fpm php8-pear sudo zypper install apache2-event (optional but recommended; prefork is only good for mod_php) sudo a2enmod proxy sudo a2enmod proxy_fcgi sudo a2enmod setenvif sudo a2enmod fcgid
为了与 mod_php 具有相同的功能,将 PEAR 添加到环境中
在 /etc/php8/fpm/php-fpm.d/www.conf 的末尾添加
php_admin_value[include_path] = /usr/share/php/PEAR
启动并启用 PHP-FPM 守护进程
sudo systemctl start php-fpm sudo systemctl enable php-fpm
编辑 Apache FastCGI 配置
sudo vi /etc/apache2/conf.d/mod_fcgid.conf
在文件末尾,更改
#<FilesMatch "\.php$"> # AddHandler fcgid-script .php # Options +ExecCGI # FcgidWrapper /srv/www/cgi-bin/php7 .php #</FilesMatch>
到
DirectoryIndex index.php
<FilesMatch "\.php$">
SetHandler "proxy:fcgi://127.0.0.1:9000/"
#CGIPassAuth on
</FilesMatch>
对于 Sabre、iRony 或 APCu 等,您应该启用 CGIPassAuth。
将 Apache MPM 设置为 event (可选但推荐)
在 /etc/sysconfig/apache2 中,确保设置
APACHE_MPM="event"
最后,通过以下方式重启 Apache
sudo systemctl restart apache2