首页 Linux基本命令 软件 常用网址 Windows命令 期权 CRYPTO 波动率 Ubuntu命令 技术指标 宏观经济 幸福村

首页 -> 软件 -> PHP-FPM


在 Ubuntu 系统中,将 Apache 的 PHP 运行模式从 mod_php 切换到 PHP-FPM 是一个标准的操作流程。Ubuntu 提供了 a2enmod 和 a2enconf 等工具,使得这个过程非常简单。

以下是详细的操作步骤:

1. 确认当前的 PHP 版本

首先,你需要知道你安装的是哪个版本的 PHP(例如 8.1, 8.2 或 8.3),因为命令中需要包含版本号。

Bash
php -v  

假设你的版本显示是“PHP 8.1.2-1”那下面的版本号就是 8.1

2. 安装 PHP-FPM

如果尚未安装 FPM 组件,请先安装:

Bash
sudo apt update  sudo apt install php8.1-fpm  

3. 启用必要的 Apache 模块

PHP-FPM 需要通过 FastCGI 协议与 Apache 通信,因此需要开启代理模块:

Bash
sudo a2enmod proxy_fcgi setenvif  

4. 启用 PHP-FPM 配置文件

Ubuntu 的 PHP 安装包自带了针对 Apache 的 FPM 配置文件,直接启用即可:

Bash
# 将 8.x 替换为你实际的版本号  sudo a2enconf php8.x-fpm  

5. 禁用旧的 mod_php 模块

为了避免冲突,必须关闭原有的 PHP 模块:

Bash
# 将 8.x 替换为你实际的版本号  sudo a2dismod php8.x  

6. 切换 Apache 的工作模式 (MPM)

这是最关键的一步:

执行以下命令切换:

Bash
sudo a2dismod mpm_prefork  sudo a2enmod mpm_event  

7. 重启服务

重启 Apache 和 PHP-FPM 使配置生效:

Bash
sudo systemctl restart apache2  sudo systemctl restart php8.x-fpm  

8. 验证结果

  1. 命令行验证:

    Bash
    sudo systemctl status php8.x-fpm  

    确认状态为 active (running)。

  2. 浏览器验证: 创建一个 info.php 文件:

    PHP
    <?php phpinfo(); ?>  

    访问该页面,搜索 Server API。如果看到 FPM/FastCGI,则说明切换成功。


⚠️ 切换后的重要注意事项

  1. .htaccess 兼容性问题: 切换到 PHP-FPM 后,你在 .htaccess 文件中写的 php_value 或 php_flag 指令会导致网站出现 500 错误(Internal Server Error)。

    • 解决方法: 将这些配置移动到 /etc/php/8.x/fpm/php.ini 文件中,或者在 FPM 的池配置文件(如 /etc/php/8.x/fpm/pool.d/www.conf)中设置。

  2. 权限差异: 在 mod_php 模式下,PHP 运行在 apache 进程内。切换到 PHP-FPM 后,PHP 运行在独立的 php-fpm 进程下。虽然默认用户通常都是 www-data,但如果你之前有特殊的权限设置,请确保网页目录对 www-data 用户有正确的读写权限。

  3. 连接方式: Ubuntu 默认通常使用 Unix Socket 通信(路径通常在 /run/php/php8.x-fpm.sock)。如果你发现 Apache 报 503 错误,请检查 /etc/apache2/conf-enabled/php8.x-fpm.conf 中的 Socket 路径是否与 /etc/php/8.x/fpm/pool.d/www.conf 中的 listen 路径一致。