LNMP环境中php7.2升级到php7.4

以下是 CentOS 7 上从 PHP 7.2 升级到 PHP 7.4 的详细步骤,结合知识库中的方法和注意事项:


1.备份现有环境

bash 复制代码
#备份 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

bash 复制代码
#停止 PHP-FPM 服务
systemctl stop php-fpm

#卸载旧版本 PHP 及其扩展
yum list installed | grep php
yum remove php php-*

3.安装 Remi 仓库

安装 EPEL 和 Remi 源

bash 复制代码
yum install epel-release -y
rpm -ivh http://rpms.remirepo.net/enterprise/remi-release-7.rpm

4.安装 PHP 7.4

安装 PHP 7.4 核心及常用扩展

bash 复制代码
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

其他扩展(按需安装):

bash 复制代码
yum install php74-php-curl php74-php-bcmath php74-php-intl php74-php-soap php74-php-json -y

创建软链接(确保命令行使用 PHP 7.4)

bash 复制代码
 ln -s /usr/bin/php74 /usr/bin/php

5.配置 PHP 7.4

调整 php.ini 配置

备份原配置(如果有):

bash 复制代码
 cp /etc/opt/remi/php74/php.ini /etc/opt/remi/php74/php.ini.bak

修改配置(如内存限制、上传大小等):

bash 复制代码
 nano /etc/opt/remi/php74/php.ini

常见修改项:

bash 复制代码
 memory_limit = 256M
 upload_max_filesize = 50M
 post_max_size = 50M

启用 PHP-FPM 服务

bash 复制代码
 systemctl enable php74-php-fpm
 systemctl start php74-php-fpm

6.调整 Web 服务器

Nginx 用户

复制代码
#### 确保 Nginx 配置中指向 PHP 7.4 的 FPM 服务:

```bash
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:

```bash
 systemctl restart nginx
```

Apache 用户

复制代码
#### 安装 `libapache2-mod-php74` 模块:

```bash
 yum install php74-php-cli php74-php-common php74-php-xml php74-php-mbstring
```
复制代码
#### 启用模块并重启 Apache:

```bash
 a2enmod php74
 systemctl restart httpd
```

7.验证安装

检查 PHP 版本

bash 复制代码
 php -v

输出应包含 PHP 7.4.x
*

通过 Web 验证 创建 /var/www/html/info.php 文件:

bash 复制代码
 <?php
 phpinfo();
 ?>

访问 http://your-server-ip/info.php,确认显示 PHP 7.4。
*

检查扩展是否加载

bash 复制代码
 php -m | grep <extension_name>

8.常见问题及解决方案

依赖冲突

  • 问题yum 安装时提示依赖失败。

  • 解决

    bash 复制代码
     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.iniwww.conf 配置正确。

旧代码兼容性问题


回滚方案(如果升级失败)

卸载 PHP 7.4

bash 复制代码
 yum remove php74-*

恢复备份

bash 复制代码
 mv /etc/php.ini.bak /etc/php.ini
 mv /etc/php.d.bak /etc/php.d

总结

  • 推荐使用 Remi 仓库:这是 CentOS 7 上安装 PHP 7.4 的最稳定方式。

  • 注意扩展兼容性 :确保所有扩展(如 php-mysqlndphp-opcache)都升级到兼容版本。

  • 测试后再上线:在测试环境中验证应用兼容性,避免生产环境直接升级。

相关推荐
一勺菠萝丶2 小时前
芋道后端部署后总自己挂?从 Nginx 报错到 OOM Kill 的完整排查与修复(2核2G 服务器实战)
服务器·chrome·nginx
梁正雄2 小时前
linux服务-Bonding网卡绑定工具
linux·运维·linux bonding·网卡绑定
云边有个稻草人2 小时前
Windows 里用 Linux 不卡顿?WSL + cpolar让跨系统开发变简单
linux·运维·服务器·cpolar
打不了嗝 ᥬ᭄2 小时前
【Linux】网络层协议
linux·网络·c++·网络协议·http
LXY_BUAA2 小时前
将linux操作系统装入U盘20251107
linux·运维·服务器
kaoa0003 小时前
Linux入门攻坚——53、drbd - Distribute Replicated Block Device,分布式复制块设备-2
linux·运维·服务器
落羽的落羽3 小时前
【C++】现代C++的新特性constexpr,及其在C++14、C++17、C++20中的进化
linux·c++·人工智能·学习·机器学习·c++20·c++40周年
RisunJan3 小时前
Linux命令-e2label命令(设置第二扩展文件系统的卷标)
linux·运维·服务器
Claire_ccat3 小时前
2025山西省网络安全职业技能大赛PWN方向题解
linux·安全·网络安全·pwn·栈溢出
小苏兮3 小时前
【把Linux“聊”明白】编译器gcc/g++与调试器gdb/cgdb:从编译原理到高效调试
java·linux·运维·学习·1024程序员节