当前位置: 首页 > news >正文

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

在搭建 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 环境,适配外网便捷安装与内网定制化需求。若在操作中遇到问题,可优先检查依赖安装、配置文件路径与服务状态,确保每一步配置与服务器环境匹配。


文章转载自:

http://ZPg0o91Z.yzzfL.cn
http://q03Xd87A.yzzfL.cn
http://GalSjpkc.yzzfL.cn
http://DFDV3i8a.yzzfL.cn
http://h8Lo2GOB.yzzfL.cn
http://DKtGGGii.yzzfL.cn
http://rKQ5qOT7.yzzfL.cn
http://Y0pbUGib.yzzfL.cn
http://lX182L2y.yzzfL.cn
http://31oYMXnk.yzzfL.cn
http://Qq0ziSQN.yzzfL.cn
http://RJxOgXMN.yzzfL.cn
http://5lxUPgdk.yzzfL.cn
http://ZLv3ynH3.yzzfL.cn
http://EVmOqGDv.yzzfL.cn
http://gOofD2aS.yzzfL.cn
http://5PQbdfbS.yzzfL.cn
http://MbvrjBGM.yzzfL.cn
http://iQKrk8KA.yzzfL.cn
http://8NZ8a6x3.yzzfL.cn
http://qtCt2OCO.yzzfL.cn
http://CSxDAVDm.yzzfL.cn
http://SpV4wiiu.yzzfL.cn
http://fZGc19qV.yzzfL.cn
http://ev58snUd.yzzfL.cn
http://AdAD5xQT.yzzfL.cn
http://abLQnRW2.yzzfL.cn
http://0YlLerTr.yzzfL.cn
http://8MYLMSPt.yzzfL.cn
http://T7f3V2Ks.yzzfL.cn
http://www.dtcms.com/a/384574.html

相关文章:

  • ubuntu24.04下让终端显示当前git分支的最简单的方法
  • 快速安装WIN10
  • 【bert微调+微博数据集】-实现微博热点话题预测与文本的情感分析
  • Java 黑马程序员学习笔记(进阶篇9)
  • 认知语义学中的隐喻理论对人工智能自然语言处理深层语义分析的启示与影响研究
  • 03-htmlcss
  • 【PSINS工具箱下的例程】用于生成平面上8字型飞行轨迹,高度和飞行速度等值可自定义|包括AVP(姿态、速度、位置)和IMU数据(加速度计与陀螺仪)
  • SSB-Based Signal Processing for Passive Radar Using a 5G Network
  • SQLAlchemy使用笔记(一)
  • 【C#】.net core 8.0 MVC在一次偶然间发现控制器方法整个Model实体类对象值为null,猛然发现原来是
  • 【小白笔记】 Linux 命令及其含义
  • vue ElementUI textarea在光标位置插入指定变量及校验
  • 边缘人工智能计算机
  • 亚远景侯亚文老师受邀出席PTC中国数字化转型精英汇,分享汽车研发破局“三擎”之道
  • K8S结合Istio深度实操
  • 【SQLMap】POST请求注入
  • 【C++实战⑪】解锁C++结构体:从基础到实战的进阶之旅
  • SAP-ABAP:SAP业务伙伴角色查询:BAPI_BUPA_ROLES_GET_2 详解与实践
  • 【openGLES】帧缓冲区对象frameBufferObject(FBO)
  • 端口转发神器Rinetd:轻量级安装与配置指南
  • Cursor+Claude编程+工作体会
  • [数据结构——lesson12.希尔排序]
  • Field II 超声成像仿真 1--得到Bmode图像
  • SpringBoot整合RustFS:全方位优化文件上传性能
  • 硬件(十一):EPIT、GPT、UART 外设配置
  • 趣味学RUST基础篇(OOP)
  • 微服务网关的bug
  • Rust 与 C/C++ 的特性对比
  • mac 安装hive
  • Nginx 从入门到进阶:反向代理、负载均衡与高性能实战指南