Laravel 13 是首个原生适配 PHP 8.3 的版本,要求 PHP ≥ 8.3,移除了 PHP 8.2 兼容代码,并支持只读属性动态赋值、json_validate() 及 Attributes 元数据声明等新特性。

Laravel 适配 PHP 8.3 的核心不是“单独适配”,而是升级到明确支持 PHP 8.3 的 Laravel 版本——即 Laravel 13(2026 年 3 月正式发布,要求 PHP ≥ 8.3)。低版本 Laravel(如 12 或更早)无法原生兼容 PHP 8.3,强行运行会出现语法错误或扩展加载异常。
确认当前环境是否达标
先检查本地或 Homestead 中的 PHP 实际版本:
- 在终端运行
php -v,输出必须为8.3.x(如8.3.12),不能是8.2.20或更低 - 运行
php -m | grep -E "(pdo|openssl|mbstring|json)"确保关键扩展已启用 - 若用 Homestead,需在
Homestead.yaml中为站点显式指定 PHP 版本,例如:php: "8.3"
升级到 Laravel 13 是唯一合规路径
Laravel 13 是首个将 PHP 8.3 设为最低要求的主版本,它移除了所有为兼容 PHP 8.2 而保留的 polyfill 和冗余逻辑。升级前请确保:
Laravel Cloud(cloud.laravel.com)。此技能用于处理所有 Laravel Cloud 请求,包括搜索和读取数据。只要任务涉及 Laravel Cloud,即使用此技能。
- composer.json 中
"php": "^8.3"已写入require字段(不是仅靠系统环境) - 删除旧版约束如
"php": "^8.0"或"^8.2",否则 Composer 会拒绝安装 - 同步更新生态包:如
laravel/sanctum至^5.0、spatie/laravel-ignition至^3.0,它们均已适配 Laravel 13
利用新特性提升代码质量
Laravel 13 全面启用 PHP 8.3 原生能力,无需额外配置即可使用:
-
只读属性动态赋值:模型中声明
public readonly string $status;,可在构造后一次性修改,适合状态流转场景 -
json_validate():替代
json_decode($json) !== null,性能更高且语义清晰 -
Attributes 替代配置属性:如
#[Fillable(['name', 'email'])]直接标注在模型类上,比$fillable数组更直观、更易维护
避开常见陷阱
升级过程中最容易出错的几个点:
- 不要在宿主机(如 Windows PowerShell)里直接
composer update—— 即使宿主机 PHP 是 8.3,Homestead 内部仍用自己打包的 PHP 运行时,必须vagrant ssh后操作 - 别忽略
config/platform:如果 composer.json 中有该字段且锁定了"php": "8.2.5",Composer 会强制按旧版本校验,必须删掉或改为"8.3" - API 路由隐式绑定默认变严格:字符串主键模型(如 UUID)需显式加
protected $keyType = 'string'; public $incrementing = false;,否则/api/users/abc123会 404
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!










