centos 7/8安装php必须先确认系统版本并启用对应仓库:centos 7用yum+remi源(rpm -uvh remi-release-7.rpm),centos 8+用dnf+remi模块(dnf module enable php:remi-8.1等),否则默认仅提供php 5.4或7.2,导致安装失败或版本过旧。

确认系统版本和仓库状态
CentOS 8+ 和 CentOS 7 的 PHP 安装路径完全不同,直接套用命令会失败。CentOS 7 用 yum,CentOS 8+ 默认用 dnf,且必须启用 Remi 或 AppStream 仓库才能拿到较新版本(如 PHP 8.1+)。不检查就跑安装命令,大概率遇到 No match for argument: php 或装上的是过时的 PHP 5.4。
- 查系统版本:
cat /etc/centos-release或rpm -q centos-release - CentOS 8+ 必须先启用 Remi:
sudo dnf install https://rpms.remirepo.net/enterprise/remi-release-8.rpm -y,再启用模块:sudo dnf module enable php:remi-8.1(或remi-8.2) - CentOS 7 需先装 EPEL:
sudo yum install epel-release -y,再手动配置 Remi 源(否则默认只有 PHP 5.4)
安装 PHP 及关键扩展不能只装 php
只运行 sudo dnf install php 会漏掉 MySQL 连接、多字节字符串、图像处理等核心能力,后续 Laravel、WordPress 或自定义 PDO 连接直接报错,比如 Call to undefined function mb_strlen() 或 Class 'PDO' not found。
- 必须一并安装:
php-mysqlnd(不是php-mysql,后者已废弃)、php-mbstring、php-gd、php-curl、php-xml、php-zip - 验证是否加载成功:
php -m | grep -E "(mysqlnd|mbstring|gd)"—— 每个关键词都应有输出 - 注意:CentOS 8+ 的
php-fpm是独立包,需额外安装:sudo dnf install php-fpm
修改 php.ini 前先确认生效路径
php --ini 显示的 “Loaded Configuration File” 路径,不等于 Web 环境实际读取的配置。CLI 和 FPM 使用不同 ini 文件,改错位置会导致 phpinfo() 显示的 display_errors = On 但网页仍不报错。
- 查 CLI 配置:
php --ini | grep "Loaded Configuration File" - 查 FPM 配置(Nginx 场景必需):
php-fpm -t后看日志或运行ps aux | grep php-fpm找主配置中include_path指向的实际 ini - 常见坑:
/etc/php.d/下的 .ini 文件会覆盖主文件,别只改/etc/php.ini却忘了/etc/php.d/10-opcache.ini里关掉了错误显示
Nginx + PHP-FPM 必须配对检查监听方式
很多教程复制粘贴 Nginx 的 fastcgi_pass 配置,但没核对 PHP-FPM 实际监听方式(socket 还是 TCP),结果页面空白、502 Bad Gateway 或 connect() failed (111: Connection refused)。
- 查 PHP-FPM 监听地址:
sudo grep "listen =" /etc/php-fpm.d/www.conf—— 若是listen = /run/php-fpm/www.sock,Nginx 必须配fastcgi_pass unix:/run/php-fpm/www.sock; - 若配成
fastcgi_pass 127.0.0.1:9000;但 PHP-FPM 实际监听 socket,必然失败 - 权限问题常被忽略:socket 文件属主需与 Nginx worker 进程用户一致(通常是
nginx或www-data),否则 Permission denied
php -v 成功了,info.php 就是白屏。php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











