CentOS 7 环境下 PHP 7.3 与 PHP-FPM 完整安装指南(外网 yum / 内网源码双方案)

38 阅读8分钟

在搭建 Web 服务(如搭配 Nginx 部署 PhpMyAdmin)时,PHP 环境与 PHP-FPM 是核心依赖组件 ——PHP 负责解析动态脚本,PHP-FPM(FastCGI Process Manager)则作为 FastCGI 进程管理器,实现 Nginx 与 PHP 的高效通信。本文针对 CentOS 7 系统,提供外网 yum 快速安装内网源码编译安装两种方案,覆盖依赖配置、服务启停、验证测试全流程,适配不同网络环境需求。

一、前置说明:环境与依赖基础

无论采用哪种安装方式,需先确保系统基础工具完备,且明确核心依赖关系:

  • 核心依赖:gcc(编译器)、gcc-c++、libxml2-devel(XML 解析依赖)、openssl-devel(SSL 支持)、curl-devel(curl 扩展)、libjpeg-devel(图片处理)、libpng-devel 等

  • 适用场景

    • 外网环境:适合有公网访问权限的服务器,通过 yum 仓库一键安装,省时省力
    • 内网环境:适合无公网权限的服务器,需提前下载源码包,手动编译配置,灵活性更高

二、方案一:外网环境(yum 仓库安装,推荐新手)

yum 安装依赖 EPEL(Extra Packages for Enterprise Linux)和 Remi 仓库(专注 PHP 更新的第三方仓库),可快速获取稳定的 PHP 7.3 版本及扩展。

步骤 1:安装基础依赖与仓库配置

  1. 先安装系统基础工具与依赖包(-y 参数自动确认,无需手动输入 y):

yum install -y wget gcc gcc-c++ make libxml2-devel openssl-devel curl-devel libjpeg-devel libpng-devel libmcrypt-devel

  1. 安装并启用 EPEL 仓库(提供额外开源软件包):

yum install -y epel-release

  1. 安装 Remi 仓库(用于指定 PHP 7.3 版本):

yum install -y https://rpms.remi.io/remi-release-7.rpm

  1. 启用 PHP 7.3 的 Remi 仓库(通过 yum-utils 工具管理仓库启用状态):

yum install -y yum-utils

yum-config-manager --enable remi-php73

步骤 2:安装 PHP 7.3 与常用扩展

执行以下命令安装 PHP 7.3 及 PHP-FPM,同时包含 PhpMyAdmin 等 Web 应用常用的扩展(如 mysqli、gd、curl 等):

yum install -y php php-fpm php-mysqlnd php-gd php-curl php-xml php-mbstring php-json php-opcache

  • 关键组件说明:

    • php:PHP 核心运行环境
    • php-fpm:PHP-FPM 进程管理器(Nginx 必装)
    • php-mysqlnd:MySQL 数据库连接扩展(替代旧版 php-mysql)
    • php-gd:图片处理扩展(生成验证码、缩略图等)

步骤 3:验证 PHP 安装与版本

安装完成后,通过以下命令验证 PHP 版本,确认安装成功:

php -v

若输出类似以下内容,说明 PHP 7.3 安装成功:

步骤 4:PHP-FPM 配置与服务管理

  1. 修改 PHP-FPM 默认配置(可选,根据需求调整):

编辑 PHP-FPM 主配置文件 /etc/php-fpm.conf,确认包含子配置目录(默认已配置,无需修改):

vi /etc/php-fpm.conf

确保存在以下行(加载 www.conf 子配置):

include=/etc/php-fpm.d/*.conf

编辑子配置文件 / etc/php-fpm.d/www.conf(调整运行用户、端口等):

vi /etc/php-fpm.d/www.conf

关键配置修改(根据服务器环境调整):

    • user = nginx:PHP-FPM 运行用户(需与 Nginx 用户一致,避免权限问题)
    • group = nginx:运行组(同上)
    • listen = 127.0.0.1:9000:监听地址与端口(默认 9000,若端口冲突可修改,如 9001)
    • pm.max_children = 50:最大进程数(根据服务器 CPU 核心数调整,建议 1 核 2-4 个)
  1. 启动与设置开机自启

# 启动PHP-FPM服务

systemctl start php-fpm

# 设置开机自启

systemctl enable php-fpm

# 查看服务状态(确认是否正常运行)

systemctl status php-fpm

若输出 active (running),说明 PHP-FPM 服务启动成功。

三、方案二:内网环境(源码编译安装,适合定制化需求)

内网环境无公网权限,需先在有外网的机器下载 PHP 7.3 源码包,再传输到内网服务器,通过手动编译安装,可灵活配置扩展与安装路径。

步骤 1:准备源码包与基础依赖

  1. 下载 PHP 7.3 源码包(外网机器操作):

访问 PHP 官网下载指定版本(本文以 7.3.24 为例),下载链接:

https://www.php.net/distributions/php-7.3.24.tar.gz

将下载的 php-7.3.24.tar.gz 通过 U 盘、FTP 等方式传输到内网 CentOS 7 服务器(如 / usr/local/src / 目录)。

  1. 内网服务器安装依赖(若内网有本地 yum 源,可直接用 yum;无则需手动下载依赖源码编译,此处假设内网有基础依赖):

yum install -y gcc gcc-c++ make libxml2-devel openssl-devel curl-devel libjpeg-devel libpng-devel

步骤 2:解压源码包并配置编译参数

  1. 进入源码包存放目录,解压文件:

cd /usr/local/src/

tar -zxvf php-7.3.24.tar.gz

cd php-7.3.24

  1. 配置编译参数(核心步骤,决定安装路径、启用扩展等):

执行以下命令,指定安装路径为 / usr/local/php,并启用常用扩展(根据需求调整参数):

./configure \

--prefix=/usr/local/php \ # PHP安装目录

--with-config-file-path=/usr/local/php/etc \ # php.ini配置文件路径

--enable-fpm \ # 启用PHP-FPM

--with-fpm-user=nginx \ # PHP-FPM运行用户

--with-fpm-group=nginx \ # 运行组

--with-mysql=mysqlnd \ # MySQL支持(mysqlnd驱动)

--with-mysqli=mysqlnd \

--with-pdo-mysql=mysqlnd \

--with-gd \ # 启用GD库(图片处理)

--with-curl \ # 启用curl扩展

--with-openssl \ # 启用SSL支持

--with-mbstring \ # 启用多字节字符串支持

--enable-xml \ # 启用XML扩展

--enable-opcache \ # 启用OPcache(加速PHP执行)

--enable-cli # 启用CLI模式(命令行)

  • 若配置过程中提示 “缺少 xxx 依赖”,需先安装对应依赖(内网环境需手动下载依赖源码编译)。

步骤 3:编译与安装

配置完成后,执行编译与安装命令(-j4 表示用 4 个线程编译,可根据 CPU 核心数调整,加速编译):

make -j4 && make install

  • 编译过程耗时较长(5-15 分钟,取决于服务器性能),若出现 Installing shared extensions: /usr/local/php/lib/php/extensions/no-debug-non-zts-20180731 / 等提示,说明安装成功。

步骤 4:配置 PHP 与 PHP-FPM

  1. 复制 php.ini 配置文件

PHP 源码包中提供了两个默认配置文件(php.ini-production 生产环境版,php.ini-development 开发环境版),复制生产环境版到指定路径并改名:

cp /usr/local/src/php-7.3.24/php.ini-production /usr/local/php/etc/php.ini

  1. 配置 PHP-FPM 启动脚本

将源码包中的 PHP-FPM 初始化脚本复制到系统服务目录,方便管理:

cp /usr/local/src/php-7.3.24/sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm

# 赋予脚本执行权限

chmod +x /etc/init.d/php-fpm

  1. 生成 PHP-FPM 主配置文件

安装目录下默认有配置文件模板,复制并改名:

cp /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf

  1. 配置 PHP-FPM 子进程(www.conf)

复制子配置模板,调整监听端口、运行用户等关键参数:

cp /usr/local/php/etc/php-fpm.d/www.conf.default /usr/local/php/etc/php-fpm.d/www.conf

# 编辑子配置文件

vi /usr/local/php/etc/php-fpm.d/www.conf

关键修改(同 yum 安装方案):

  • listen = 127.0.0.1:9000:若 9000 端口被占用,修改为其他端口(如 9001)
  • user = nginx、group = nginx:与 Nginx 运行用户一致
  • pm.max_children = 50:根据服务器性能调整

步骤 5:添加环境变量(可选,方便命令行使用)

默认情况下,php 命令无法直接在任意目录执行,需添加环境变量:

编辑 / etc/profile 文件:

vi /etc/profile

 在文件末尾添加以下内容(指定 PHP 二进制文件路径):

export PATH=$PATH:/usr/local/php/bin:/usr/local/php/sbin

生效环境变量:

source /etc/profile

验证环境变量:执行 php -v,若输出 PHP 版本信息,说明配置成功。

步骤 6:启动 PHP-FPM 服务

通过初始化脚本启动 PHP-FPM,并设置开机自启:

# 启动PHP-FPM

/etc/init.d/php-fpm start

# 查看服务状态(确认是否启动)

/etc/init.d/php-fpm status

# 设置开机自启(通过chkconfig工具)

chkconfig --add php-fpm

chkconfig php-fpm on

  • 启动成功后,可通过 netstat -tulnp | grep 9000 查看端口监听状态(若修改端口,替换为实际端口)。

四、通用验证:确认 PHP-FPM 与 Nginx 通信(关键)

无论哪种安装方案,安装完成后需验证 PHP-FPM 是否能与 Nginx 正常协作,确保动态脚本可解析:

步骤 1:配置 Nginx 支持 PHP

编辑 Nginx 虚拟主机配置文件(如 / etc/nginx/conf.d/default.conf),添加 PHP 解析规则:

vi /etc/nginx/conf.d/default.conf

在 server 块中添加以下内容:

location ~ \.php$ {

root /usr/share/nginx/html; # Nginx网站根目录

fastcgi_pass 127.0.0.1:9000; # 对接PHP-FPM的监听地址与端口

fastcgi_index index.php;

fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; # 关键:指定PHP脚本路径

include fastcgi_params;

}

步骤 2:创建测试 PHP 文件

在 Nginx 网站根目录下创建 info.php 文件,用于测试 PHP 解析:

echo "<?php phpinfo(); ?>" > /usr/share/nginx/html/info.php

步骤 3:访问测试页面

重启 Nginx 服务,使配置生效:

systemctl restart nginx

在浏览器中访问 http:// 服务器 IP/info.php,若显示 PHP 信息页面(包含 PHP 版本、扩展、FPM 配置等),说明 PHP-FPM 与 Nginx 通信正常,环境搭建成功。

五、常见问题与解决办法

PHP-FPM 启动失败:“Address already in use”

原因:9000 端口被其他进程占用。

解决:修改 www.conf 中的 listen 端口(如 9001),并同步更新 Nginx 配置中的 fastcgi_pass 端口。

浏览器访问 info.php 显示空白或下载文件

原因:Nginx 未正确配置 PHP 解析规则,或 PHP-FPM 未启动。

解决:

  • 检查 Nginx 配置中的 fastcgi_param SCRIPT_FILENAME 路径是否正确(需与网站根目录一致);
  • 检查 PHP-FPM 服务是否正常运行(systemctl status php-fpm 或 / etc/init.d/php-fpm status)。

源码编译时提示 “configure: error: Cannot find OpenSSL's <evp.h>”

原因:缺少 OpenSSL 依赖。

解决:内网环境需手动下载 openssl-devel 源码编译安装;外网环境直接执行 yum install -y openssl-devel。

六、后续操作:安装 PhpMyAdmin

完成 PHP 与 PHP-FPM 安装后,即可继续安装 PhpMyAdmin(需将 PhpMyAdmin 文件放在 Nginx 网站根目录,通过浏览器访问配置数据库连接),具体步骤可参考 PhpMyAdmin 官方文档,核心依赖已通过本文方案满足。

通过本文两种方案,可在 CentOS 7 系统中快速搭建稳定的 PHP 7.3 与 PHP-FPM 环境,适配外网便捷安装与内网定制化需求。若在操作中遇到问题,可优先检查依赖安装、配置文件路径与服务状态,确保每一步配置与服务器环境匹配。