PHP 7.4 仅支持 Laravel 6–8,Laravel 9 起强制要求 PHP ≥ 8.0.2,Laravel 11 更需 PHP ≥ 8.2;phpEnv 等旧环境因无法安装 PHP 8.2 及以上版本,彻底不兼容 Laravel 9+。

PHP 7.4 还能用 Laravel,但仅限于 Laravel 8 及更早版本;Laravel 9 起已彻底放弃对 PHP 7.4 的支持。这不是配置问题,而是框架底层语法和扩展依赖的硬性限制——比如 Laravel 11 强制要求 PHP ≥ 8.2,连安装步骤都会被 Composer 直接拦截。
PHP 7.4 实际可运行的 Laravel 版本
在 PHP 7.4 环境下,稳定可用且官方明确支持的 Laravel 版本是:
- Laravel 6.x(LTS 长期支持版,支持至 2022 年 9 月)
- Laravel 7.x(支持至 2021 年 3 月)
- Laravel 8.x(支持至 2022 年 7 月;注意:8.4.4 之后部分组件在 phpEnv 等旧环境 CLI 下可能因扩展未启用而异常)
超出这个范围的版本,即使强行安装,也会在 composer install、artisan 命令或运行时触发致命错误,例如找不到 json 扩展、mbstring 不可用,或因 PHP 8+ 新语法(如联合类型、#[\Override])导致解析失败。
Laravel 8 到 11 的 PHP 要求逐级收紧
各版本对 PHP 的最低与最高兼容边界持续收窄,体现为“向上不兼容”趋势:
立即学习“PHP免费学习笔记(深入)”;
- Laravel 8.x:PHP 7.3 – 8.1(8.75+ 才完整支持 8.1;PHP 7.4 完全适配)
- Laravel 9.x:PHP ≥ 8.0.2(彻底剔除 PHP 7.x;不兼容 7.4)
- Laravel 10.x:PHP ≥ 8.1(要求 ext-pdo、ext-json 等扩展显式启用)
- Laravel 11.x:PHP ≥ 8.2(强制依赖 pcntl、opcache、xml、tokenizer 等;phpEnv 等停止维护的套件完全无法满足)
常见误操作与实际风险
很多开发者以为“升级 Laravel 就是改 composer.json 里的版本号”,却忽略了三处关键断层:
- composer.json 中 "php": "^7.4" 未同步更新 → Composer 会静默跳过高版本依赖,导致 vendor 包缺失或降级
- 服务器 PHP 实际版本仍是 7.4,却绑定了 Laravel 11 网站 → Nginx/Apache 返回 500 或空白页,日志里常出现 “Class ‘JsonException’ not found”
- 使用 phpEnv、XAMPP、旧版宝塔等内置 PHP 7.4 的环境 → 这些工具无法安装 PHP 8.2,不是设置问题,是架构级不兼容
过渡建议:从 PHP 7.4 迁移到现代 Laravel 的务实路径
若当前项目基于 PHP 7.4 + Laravel 6/7/8,升级到 Laravel 11 不是一次性动作,而是分阶段工程:
- 先将 PHP 升级到 8.1 或 8.2(推荐宝塔面板新增 PHP-82 并手动启用 mbstring、pdo、json、openssl、xml)
- 再按 Laravel 升级指南逐版迁移:8 → 9 → 10 → 11,每步跑通 php artisan optimize:clear 和 composer update
- 检查 .env 中 SESSION_DRIVER、CACHE_DRIVER、QUEUE_CONNECTION 是否仍指向已废弃的 sqlite/file 驱动
- 确认数据库字符集为 utf8mb4_unicode_ci(尤其 MySQL 5.7+),避免 Laravel 9+ 默认迁移报错



















