SDB:Apache FastCGI 和 PHP-FPM 配置

跳转到:导航搜索

为什么选择 PHP-FPM

php-fpm 的配置比 apache2-mod_php 复杂,但它提供了一些优势

  1. 支持事件模式 (mod_php 仅支持预fork模式)
  2. 支持 HTTP2
  3. 更好的性能

操作方法

禁用 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