以下是 CentOS 7 上从 PHP 7.2 升级到 PHP 7.4 的详细步骤,结合知识库中的方法和注意事项:
1.备份现有环境
#备份 PHP 配置文件
cp /etc/php.ini /etc/php.ini.bak
cp -r /etc/php.d /etc/php.d.bak
#备份网站文件和数据库
tar -czvf website_backup.tar.gz /var/www/html
mysqldump -u root -p database_name > database_backup.sql
2.卸载旧版本 PHP
#停止 PHP-FPM 服务
systemctl stop php-fpm
#卸载旧版本 PHP 及其扩展
yum list installed | grep php
yum remove php php-*
3.安装 Remi 仓库
安装 EPEL 和 Remi 源
yum install epel-release -y rpm -ivh http://rpms.remirepo.net/enterprise/remi-release-7.rpm
4.安装 PHP 7.4
安装 PHP 7.4 核心及常用扩展
yum install php74-php php74-php-cli php74-php-fpm php74-php-mysqlnd php74-php-mbstring php74-php-xml php74-php-gd php74-php-opcache -y
其他扩展(按需安装):
yum install php74-php-curl php74-php-bcmath php74-php-intl php74-php-soap php74-php-json -y
创建软链接(确保命令行使用 PHP 7.4)
ln -s /usr/bin/php74 /usr/bin/php
5.配置 PHP 7.4
调整
php.ini
配置备份原配置(如果有):
cp /etc/opt/remi/php74/php.ini /etc/opt/remi/php74/php.ini.bak
修改配置(如内存限制、上传大小等):
nano /etc/opt/remi/php74/php.ini
常见修改项:
memory_limit = 256M
upload_max_filesize = 50M
post_max_size = 50M
启用 PHP-FPM 服务
systemctl enable php74-php-fpm systemctl start php74-php-fpm
6.调整 Web 服务器
Nginx 用户
确保 Nginx 配置中指向 PHP 7.4 的 FPM 服务:
location ~ \.php$ { include fastcgi_params; fastcgi_pass unix:/var/opt/remi/php74/run/php-fpm/www.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; }
重启 Nginx:
systemctl restart nginx
Apache 用户
安装
libapache2-mod-php74
模块:yum install php74-php-cli php74-php-common php74-php-xml php74-php-mbstring
启用模块并重启 Apache:
a2enmod php74 systemctl restart httpd
7.验证安装
检查 PHP 版本
php -v
输出应包含
PHP 7.4.x
。通过 Web 验证 创建
/var/www/html/info.php
文件:<?php phpinfo(); ?>
访问
http://your-server-ip/info.php
,确认显示 PHP 7.4。检查扩展是否加载
php -m | grep <extension_name>
8.常见问题及解决方案
依赖冲突
问题:
yum
安装时提示依赖失败。解决:
yum -y install yum-utils yum-config-manager --enable remi-php74 yum install php74-php-<package>
PHP-FPM 无法启动
问题:
systemctl start php74-php-fpm
报错。解决:
检查
/var/opt/remi/php74/log/php-fpm/error.log
中的日志。确保
php.ini
和www.conf
配置正确。
旧代码兼容性问题
问题:升级后网站报错。
解决:
检查是否使用了 PHP 7.4 的 预留关键字(如
static
、mixed
)。参考 PHP 7.4 迁移指南 修复代码。
回滚方案(如果升级失败)
卸载 PHP 7.4
yum remove php74-*
恢复备份
mv /etc/php.ini.bak /etc/php.ini mv /etc/php.d.bak /etc/php.d
总结
推荐使用 Remi 仓库:这是 CentOS 7 上安装 PHP 7.4 的最稳定方式。
注意扩展兼容性:确保所有扩展(如
php-mysqlnd
、php-opcache
)都升级到兼容版本。测试后再上线:在测试环境中验证应用兼容性,避免生产环境直接升级。