前言
CentOS 官方倉庫提供 PHP 包,通過 yum 可實現極速部署。本文涵蓋基礎安裝、擴展模塊、版本選擇(5.1 vs 5.3+)、服務聯動與驗證。
一、基礎安裝命令
# 僅安裝 PHP 核心(CLI)
yum install -y php
# 推薦:核心 + 開發頭文件 + MySQL 支持
yum install -y php php-devel php-mysql
二、版本選擇策略
| CentOS 版本 | 默認 PHP 版本 | 安裝命令 |
| CentOS 5 / 6 | 5.1 / 5.3 (EOL) | yum install php php-devel php-mysql |
| CentOS 7 | 5.4 (EOL) | yum install php php-devel php-mysql |
| CentOS 7 (SCLo) | 5.6 / 7.0 / 7.1 / 7.2 / 7.3 | yum install centos-release-scl && yum install rh-php72 php72-php-devel php72-php-mysqlnd |
| CentOS 8 / 9 Stream | 7.2 / 7.4 / 8.0 / 8.1 | dnf install php php-devel php-mysqlnd |
| CentOS 7 (Remi 源,推薦現代版本) | 7.4 / 8.0 / 8.1 / 8.2 / 8.3 | 見下文 |
三、啟用 Remi 源安裝現代 PHP (CentOS 7/8)
# 1. 安裝 EPEL + Remi
yum install -y epel-release
yum install -y https://rpms.remirepo.net/enterprise/remi-release-7.rpm # CentOS 7
# dnf install -y https://rpms.remirepo.net/enterprise/remi-release-8.rpm # CentOS 8/9
# 2. 啟用目標版本模塊 (以 PHP 8.2 為例)
yum install -y yum-utils
yum-config-manager --enable remi-php82
# 3. 安裝
yum install -y php php-devel php-mysqlnd php-fpm php-opcache php-gd php-mbstring php-xml php-json php-curl php-zip php-intl php-bcmath
# 4. 啟動 PHP-FPM
systemctl enable --now php-fpm
systemctl status php-fpm
四、常用擴展模塊對照表
| 功能 | 包名 (CentOS 7 base) | 包名 (Remi / CentOS 8+) |
| MySQL 原生驅動 | php-mysql | php-mysqlnd |
| GD 圖形處理 | php-gd | php-gd |
| 多字節字符串 | php-mbstring | php-mbstring |
| XML 解析 | php-xml | php-xml |
| JSON | php-json (內建 5.2+) | 內建 |
| cURL | php-curl | php-curl |
| ZIP 壓縮 | php-zip | php-zip |
| 國際化 | php-intl | php-intl |
| 高精度數學 | php-bcmath | php-bcmath |
| OpCache | php-opcache (5.5+) | php-opcache |
| Redis | php-pecl-redis (需 EPEL) | php-pecl-redis |
| MongoDB | php-pecl-mongodb | php-pecl-mongodb |
五、服務聯動:Apache (httpd) + PHP-FPM
# 安裝 Apache
yum install -y httpd
systemctl enable --now httpd
# PHP-FPM 已在上文安裝啟動
# Apache 配置代理到 PHP-FPM (推薦 Event MPM + ProxyFCGI)
# /etc/httpd/conf.d/php-fpm.conf
ProxySet connectiontimeout=30 timeout=300
SetHandler "proxy:fcgi://127.0.0.1:9000"
# 重啟 Apache
systemctl restart httpd
六、驗證安裝
# CLI 版本
php -v
# 模塊列表
php -m
# 信息頁 (放在 Web 根目錄)
echo ' /var/www/html/info.php
curl https://localhost/info.php | grep -E 'PHP Version|Loaded Configuration|mysqlnd|gd|opcache'
七、常見問題
| 問題 | 解決 |
| 缺少 libzip / libonig 等依賴 | 啟用 powertools / crb 倉庫:yum config-manager --set-enabled powertools |
| PHP-FPM 權限錯誤 | 調整 /etc/php-fpm.d/www.conf 中 user/group = nginx/apache,匹配 Web 服務器用戶 |
| OpCache 未生效 | 確認 php.ini 或 10-opcache.ini 有 opcache.enable=1、opcache.memory_consumption=128 |
| 版本過舊 (5.x) | 必須使用 Remi/SCl/源碼編譯升級,base 源不再更新 |
結語
CentOS 上 yum/dnf install php php-fpm php-mysqlnd php-gd php-mbstring php-xml php-opcache ... 配合 remi-php82 模塊,是獲取現代、安全、高性能 PHP 環境的最短路徑。生產環境務必鎖定版本、啟用 OpCache、配置 PHP-FPM 池大小、定期 yum update php* 修補安全漏洞。