PHP 7.4 在 2022 年 11 月 28 日已经停止了官方的安全支持,所以建议尽快升级到 PHP 8.x 或更高版本(如 PHP 8.0, 8.1 或 8.2),以获得官方的安全更新和性能改进。

要升级 PHP 7.4 到安全版本,通常需要执行以下步骤:

1. 检查当前 PHP 版本

首先,确认你的 PHP 版本是否为 7.4。运行以下命令:

php -v

2. 升级到 PHP 8.0 或更高版本

对于 Debian/Ubuntu 系统:

  1. 更新包管理器缓存:
    sudo apt update
    
  2. 添加 PHP 官方仓库:

    PHP 8.0 及以上版本可以通过 ondrej/php 仓库进行安装。首先,确保你已安装 software-properties-common

    sudo apt install software-properties-common
    

    然后添加 ondrej/php 仓库:

    sudo add-apt-repository ppa:ondrej/php
    sudo apt update
    
  3. 安装 PHP 8.0(或更高版本):

    例如,安装 PHP 8.0:

    sudo apt install php8.0
    sudo apt install php8.0-cli php8.0-fpm php8.0-mysql php8.0-xml php8.0-mbstring php8.0-curl php8.0-zip php8.0-gd
    

    如果你使用的是 PHP 8.1 或更高版本,只需替换版本号即可。

  4. 切换默认 PHP 版本:

    在安装完 PHP 8.x 后,可以使用 update-alternatives 切换默认版本。

    sudo update-alternatives --set php /usr/bin/php8.0
    sudo update-alternatives --set phpize /usr/bin/phpize8.0
    sudo update-alternatives --set php-config /usr/bin/php-config8.0
    
  5. 重启服务:

    如果你使用的是 PHP-FPM:

    sudo systemctl restart php8.0-fpm
    

    对于 Apache:

    sudo systemctl restart apache2
    
  6. 验证 PHP 版本:

    通过运行以下命令确认 PHP 已升级:

    php -v
    

对于 CentOS/RHEL 系统:

  1. 安装 EPEL 和 Remi 仓库:
    sudo yum install -y epel-release
    sudo yum install -y https://rpms.remirepo.net/enterprise/remi-release-7.rpm
    sudo yum install -y yum-utils
    
  2. 启用 Remi 仓库并安装 PHP 8.0:
    sudo yum module reset php
    sudo yum module enable php:remi-8.0
    sudo yum install php php-cli php-fpm php-mysqlnd php-xml php-mbstring php-curl php-zip php-gd
    
  3. 重启 Apache 或 PHP-FPM:
    sudo systemctl restart php-fpm
    sudo systemctl restart httpd
    
  4. 验证 PHP 版本:
    php -v
    

3. 检查和兼容性测试

在升级 PHP 后,需要检查网站或应用程序是否与新版本兼容。可以通过以下步骤进行检查:

  • 查看错误日志: 如果应用程序存在兼容性问题,可以在 PHP 错误日志中查看详细信息。
  • 运行测试: 如果你使用的是测试框架(如 PHPUnit),可以执行单元测试和集成测试来确保应用程序正常运行。
  • 更新依赖: 某些 PHP 扩展和依赖可能需要更新以支持新版本的 PHP,记得检查 composer.json 或相关依赖文件。

4. 遇到的问题和解决方案

  • 扩展兼容性: 某些 PHP 扩展可能在 PHP 8.x 中发生了变动,特别是在函数或类的命名上。可以通过查看扩展的官方文档来确保正确安装和配置。
  • 语法变化: PHP 8 引入了很多新特性,比如属性提升、联合类型、命名参数等。如果应用代码中包含不兼容的新语法或弃用的特性,可能需要修改代码。

总结

升级到 PHP 8.x 不仅能获得更强的安全性,还能提升性能和支持更多现代特性。务必测试所有应用和依赖,确保它们在新版本中运行顺畅。