在 CentOS 系统下安装 PHP 及相关扩展,推荐使用 Remi 仓库(支持较新的 PHP 版本)或 EPEL + IUS 仓库。以下是基于 CentOS 7/8 的完整步骤(以 PHP 8.2 为例):
✅ 一、准备工作
1. 更新系统并安装基础工具
sudo yum update -y
sudo yum install -y epel-release wget curl git
2. 安装 Remi 仓库(推荐)
# CentOS 7
sudo rpm -Uvh https://rpms.remirepo.net/enterprise/remi-release-7.rpm
# CentOS 8 / Stream
sudo dnf install -y https://rpms.remirepo.net/enterprise/remi-release-8.rpm
⚠️ 注意:Remi 仓库默认启用
remi-php模块,但需先禁用默认的php模块(CentOS 8+):# CentOS 8+ sudo dnf module disable php -y sudo dnf module enable remi-php82 -y # 替换为所需版本:php80, php81, php82, php83
✅ 二、安装 PHP 核心及常用扩展
方式 A:使用 dnf/yum 安装(推荐)
# 安装 PHP 8.2 核心 + 常用扩展(根据需求调整)
sudo dnf install -y
php php-cli php-common php-fpm php-mysqlnd
php-gd php-mbstring php-xml php-json php-curl
php-zip php-opcache php-intl php-bcmath php-ldap
php-imap php-soap php-pdo php-pgsql php-sqlite3
🔍 查看可用扩展列表:
dnf search php- | grep "^php-"
方式 B:安装特定扩展(如 Redis、RedisJSON、xdebug 等)
# Redis 扩展(通过 PECL 或 remi 提供)
sudo dnf install -y php-pecl-redis # 若 remi 提供
# Xdebug(调试用,生产环境慎用)
sudo dnf install -y php-xdebug
# Composer 依赖的扩展(如 intl, bcmath 等通常已包含)
✅ 三、配置与启动服务
1. 编辑 PHP-FPM 配置(可选)
sudo vi /etc/php.ini # 全局配置
sudo vi /etc/php-fpm.d/www.conf # 虚拟主机配置
常见修改项:
memory_limit = 512Mmax_execution_time = 300date.timezone = "Asia/Shanghai"
2. 启动并设置开机自启
sudo systemctl start php-fpm
sudo systemctl enable php-fpm
sudo systemctl status php-fpm
3. 验证安装
php -v
php --modules | grep -i mysql
php -m | grep opcache
创建测试文件 /var/www/html/info.php:
<?php phpinfo(); ?>
访问 http://your-ip/info.php 确认。
✅ 四、常见问题处理
| 问题 | 解决方案 |
|---|---|
No package php available |
确保已正确导入 Remi 仓库并启用对应 PHP 模块 |
| 扩展编译失败 | 安装开发包:sudo dnf install -y php-devel gcc make |
| Nginx/Apache 无法加载 PHP | 检查 Web 服务器是否配置了 FastCGI 连接(Nginx: fastcgi_pass unix:/run/php-fpm.sock;Apache: LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so + SetHandler "proxy:fcgi://127.0.0.1:9000") |
| 需要旧版 PHP(如 7.4) | 将 remi-php82 改为 remi-php74 即可 |
📌 补充建议
- 生产环境:关闭
display_errors,启用opcache,限制max_execution_time。 - 多版本共存:Remi 支持同时安装多个 PHP 版本(如
php80,php81,php82),通过alternatives或指定php82命令调用。 - 自动化部署:可结合 Ansible/SaltStack 批量管理。
需要我为你生成一个针对具体场景(如 WordPress、Laravel、ThinkPHP)的优化配置模板吗?
PHPWP博客