在服务器运维领域,CentOS 以其卓越的稳定性和安全性,一直是搭建 Web 服务的首选操作系统之一,而 PHP 作为一种广泛使用的开源脚本语言,尤其适合 Web 开发,本文将提供一份详尽的 CentOS 搭建 PHP 环境的教程,引导您完成从环境准备到功能测试的全过程,确保您能够顺利建立一个高效、可靠的 PHP 运行平台。

环境准备与系统更新
在开始安装任何软件之前,首要任务是确保您的 CentOS 系统处于最新状态,这不仅可以修复已知的安全漏洞,还能确保软件包之间的依赖关系是最优的,请通过 SSH 连接到您的 CentOS 服务器,并执行以下命令:
sudo yum update -y
此命令会更新系统中所有已安装的软件包到最新版本,对于 CentOS 8 及更高版本,您可能需要使用 dnf 替代 yum,但命令是相同的,完成更新后,一个干净、整洁的系统基础便准备就绪。
安装 Nginx Web 服务器
虽然 Apache 是传统的选择,但 Nginx 凭借其轻量级、高并发处理能力的优势,已成为现代 Web 架构的主流,本教程将以 Nginx 为例进行讲解。
- 
安装 Nginx 使用
yum包管理器可以轻松安装 Nginx:sudo yum install nginx -y
 - 
启动并设置开机自启 安装完成后,需要启动 Nginx 服务,并将其设置为系统启动时自动运行:
sudo systemctl start nginx sudo systemctl enable nginx
 - 
验证安装 您可以在浏览器中访问您服务器的公网 IP 地址,如果看到 Nginx 的默认欢迎页面,则说明 Web 服务器已成功安装并运行。
 
配置 Remi 仓库并安装 PHP
CentOS 的官方软件源通常提供的 PHP 版本较为陈旧,为了获得最新、功能更全且安全性更高的 PHP 版本(如 PHP 8.1, 8.2 等),我们强烈推荐使用 Remi 仓库。
- 
安装 EPEL 和 Remi 仓库 EPEL (Extra Packages for Enterprise Linux) 是一个由 Fedora 社区维护的,为 RHEL 系列系统提供额外软件包的仓库,Remi 仓库则依赖于 EPEL。
sudo yum install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-$(rpm -E %rhel).noarch.rpm sudo yum install -y https://rpms.remirepo.net/enterprise/remi-release-$(rpm -E %rhel).rpm
 - 
启用所需的 PHP 模块 Remi 仓库允许您轻松切换不同的 PHP 版本,查看可用的 PHP 模块流:
yum module list php -y
假设我们选择安装 PHP 8.1,可以使用以下命令启用该版本:

sudo yum module enable php:remi-8.1 -y
 - 
安装 PHP 及常用扩展 安装 PHP-FPM(FastCGI 进程管理器,用于与 Nginx 通信)以及一些常用的扩展,这些扩展能满足绝大多数 Web 应用的需求,如数据库连接、图像处理、XML 处理等。
sudo yum install php php-fpm php-mysqlnd php-gd php-xml php-mbstring php-json -y
 
下表列出了上述扩展的主要用途:
| 扩展包名 | 主要用途 | 
|---|---|
php-fpm | 
FastCGI 进程管理器,连接 Nginx 和 PHP 的桥梁 | 
php-mysqlnd | 
用于连接 MySQL/MariaDB 数据库的原生驱动 | 
php-gd | 
用于图像处理(如缩略图生成、水印添加) | 
php-xml | 
用于解析和生成 XML 数据 | 
php-mbstring | 
用于处理多字节字符串(如中文) | 
php-json | 
用于 JSON 数据的编码和解码 | 
配置 Nginx 与 PHP-FPM 协同工作
安装完成后,需要配置 Nginx,使其能够将 .php 文件的请求正确地传递给 PHP-FPM 处理。
- 
启动并启用 PHP-FPM
sudo systemctl start php-fpm sudo systemctl enable php-fpm
 - 
修改 Nginx 配置 Nginx 的默认配置文件位于
/etc/nginx/nginx.conf,而站点配置通常放在/etc/nginx/conf.d/目录下,我们编辑默认的配置文件:sudo vi /etc/nginx/conf.d/default.conf
找到
location ~ \.php$这一段,并确保其配置如下所示(如果被注释,请取消注释):location ~ \.php$ { root /usr/share/nginx/html; fastcgi_pass unix:/run/php-fpm/www.sock; # 使用 socket 连接,性能更佳 fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; }注意:
fastcgi_pass的值需要与 PHP-FPM 的配置文件(/etc/php-fpm.d/www.conf)中的listen指令保持一致,默认情况下,它们都配置为使用unix:/run/php-fpm/www.sock。 - 
重启 Nginx 保存配置文件后,重启 Nginx 使更改生效:
sudo systemctl restart nginx
 
测试 PHP 环境
为了验证整个环境是否配置成功,我们可以创建一个 PHP 信息文件。
- 
创建
info.php文件 在 Nginx 的网站根目录(通常是/usr/share/nginx/html/)下创建一个新文件:
sudo vi /usr/share/nginx/html/info.php
在文件中输入以下内容:
<?php phpinfo(); ?>
 - 
访问测试页面 在浏览器中访问
http://your_server_ip/info.php,如果一切正常,您将看到一个详细的 PHP 配置信息页面,其中包含了 PHP 版本、已安装的扩展、服务器变量等所有信息。安全提示:测试完成后,请务必删除此文件,因为它会暴露服务器的敏感信息。
sudo rm /usr/share/nginx/html/info.php
 
至此,您已经成功在 CentOS 服务器上搭建了一个由 Nginx 和 PHP-FPM 构成的、功能完善的 PHP 运行环境。
相关问答FAQs
为什么推荐使用 Remi 仓库而不是 CentOS 默认仓库安装 PHP?
解答:CentOS 官方仓库的首要目标是稳定,因此其提供的软件包版本通常比较保守,往往滞后于上游软件的最新版本,使用 Remi 仓库的主要优势在于:
- 版本更新:Remi 仓库会及时跟进 PHP 的发布周期,提供最新的稳定版本(如 PHP 8.0, 8.1, 8.2 等),让您能使用新特性、性能优化和安全修复。
 - 版本灵活性:您可以轻松地在同一系统上安装和切换多个 PHP 版本,这对于需要维护不同旧项目的开发者来说非常方便。
 - 扩展齐全:Remi 仓库提供了几乎所有主流的 PHP 扩展,无需手动编译安装,大大简化了环境搭建过程。
 
Nginx 和 Apache 在搭建 PHP 环境时有什么主要区别?
解答:两者都能很好地与 PHP 协同工作,但其底层机制和性能表现有所不同:
- 处理方式:Apache 传统上通过 
mod_php模块将 PHP 作为其自身进程的一部分来处理,配置简单,一体化程度高,而 Nginx 本身不解析 PHP,它作为反向代理,将 PHP 请求通过 FastCGI 协议(通常是 PHP-FPM)转发给一个独立的 PHP 服务进程来处理。 - 性能与资源:在高并发场景下,Nginx + PHP-FPM 的模型通常表现更优,Nginx 以其事件驱动、非阻塞的架构著称,能高效处理大量静态文件和并发连接,而 PHP-FPM 可以独立管理进程池,资源控制更精细,Apache 的 
mod_php模式在并发请求增多时,可能会因进程/线程开销过大而导致性能下降。 - 配置复杂度:对于初学者而言,Apache 的配置可能更直观,尤其是在 
.htaccess文件的支持上,Nginx 的配置则更为灵活和强大,但需要理解其location块和代理规则,学习曲线稍陡一些。