
本文详解在 ubuntu 环境下安全降级 php 版本(如从 8.1.6 回退至 7.1.3)的完整流程,涵盖多版本共存、默认版本切换、composer 兼容性验证及生产环境注意事项。
本文详解在 ubuntu 环境下安全降级 php 版本(如从 8.1.6 回退至 7.1.3)的完整流程,涵盖多版本共存、默认版本切换、composer 兼容性验证及生产环境注意事项。
在 Laravel 生产环境中,apt dist-upgrade 意外升级 PHP 至 8.1.6 后触发 Composer 报错 This package requires php ^7.1.3 but your PHP version (8.1.6) does not satisfy that requirement,说明项目严格依赖 PHP 7.x 语法与扩展(如 mcrypt 已废弃、mysql_* 函数移除等)。直接卸载 PHP 8 并重装 7.1.3 极易引发系统冲突(如 Apache/Nginx 模块不匹配、依赖损坏),因此推荐采用「多版本共存 + 切换默认版本」的安全方案。
✅ 步骤一:确认当前 PHP 状态
# 查看已安装的所有 PHP 版本 ls /usr/bin/php* # 检查当前 CLI 和 Web 服务器使用的 PHP 版本 php -v php -m | grep cli # 确认 CLI SAPI # 若使用 Apache:a2query -m php* 或 apache2ctl -M | grep php # 若使用 Nginx + FPM:sudo systemctl status php*-fpm
✅ 步骤二:添加 PHP 7.1 仓库并安装(Ubuntu 20.04+ 需手动配置)
⚠️ 注意:Ubuntu 官方源已移除 PHP 7.1(EOL),必须使用第三方可信源(如 ondrej/php)
# 添加 Ondřej Surý 的 PHP PPA(支持 Ubuntu 16.04–22.04) sudo apt update sudo apt install -y software-properties-common sudo add-apt-repository ppa:ondrej/php sudo apt update
安装 PHP 7.1 及必要扩展(Laravel 5.5+ 所需)
sudo apt install -y php7.1 php7.1-cli php7.1-fpm php7.1-mysql php7.1-curl \ php7.1-gd php7.1-mbstring php7.1-xml php7.1-zip php7.1-bcmath
验证安装
php7.1 -v # 应输出 7.1.33(实际可用的最新 7.1.x 版本)
### ✅ 步骤三:切换默认 PHP 版本(CLI + FPM) ```bash # 使用 update-alternatives 管理多版本(推荐) sudo update-alternatives --install /usr/bin/php php /usr/bin/php7.1 71 \ --slave /usr/bin/php-config php-config /usr/bin/php7.1-config \ --slave /usr/bin/phpize phpize /usr/bin/php7.1ize sudo update-alternatives --install /usr/bin/php php /usr/bin/php8.1 81 # 交互式选择默认版本(选 71) sudo update-alternatives --config php # 验证 CLI 版本 php -v # 应显示 PHP 7.1.x # 若使用 PHP-FPM(Nginx/Apache),切换 FPM 服务 sudo a2dismod php8.1 sudo a2enmod php7.1 sudo systemctl restart apache2 # 或 Nginx 用户: sudo systemctl disable php8.1-fpm sudo systemctl enable php7.1-fpm sudo systemctl restart php7.1-fpm nginx
✅ 步骤四:验证 Composer 兼容性
# 清理 Composer 缓存并强制使用 PHP 7.1 解析依赖 php7.1 /usr/local/bin/composer install --no-interaction --prefer-dist --optimize-autoloader # 或设置临时环境变量(确保 Composer 使用正确 PHP) export PATH="/usr/bin/php7.1:$PATH" composer install --no-interaction --prefer-dist --optimize-autoloader
⚠️ 关键注意事项(生产环境必读)
- 切勿删除 PHP 8.1:保留高版本可避免破坏系统工具(如 apt 依赖的 php-cli),仅切换默认版本。
- 扩展兼容性检查:PHP 7.1 不支持 sodium 原生扩展(需 libsodium 库),若项目使用 password_hash() 请确认已启用。
- Web 服务器同步:Apache 模块与 FPM 必须一致;Nginx fastcgi_pass 需指向 php7.1-fpm.sock。
- 备份与回滚:操作前执行 sudo cp -r /etc/php /etc/php-backup-$(date +%F),并记录 dpkg -l | grep php 输出。
- 长期建议:PHP 7.1 已于 2019 年终止支持(EOL),强烈建议规划升级至 PHP 7.4 或 8.1+,通过 laravel-shift.com 或手动迁移 str_slug() → Str::slug() 等变更。
完成上述步骤后,composer install 将成功解析 ^7.1.3 要求,且 Web 服务无缝运行。记住:生产环境变更务必在预发布环境充分验证,并配合监控(如 php -m 检查扩展加载状态)。
立即学习“PHP免费学习笔记(深入)”;



















