Laravel Passport部署需先确认PHP≥8.0、必要扩展启用及AuthServiceProvider注册,再执行composer require、migrate和passport:install命令,否则易因环境不兼容导致失败。

装不上 laravel/passport,90% 是 PHP 版本、MySQL 版本或命令顺序错了,不是网络或权限问题。
composer require laravel/passport 前必须确认的三件事
别急着敲命令,先验证基础环境是否达标:
- 运行
php -v确认 PHP ≥ 8.0(Laravel 10 + Passport v11 要求);PHP 7.4 只能用 Passport v10(对应 Laravel 9) - 运行
php -m | grep -E "json|openssl|pdo"确保ext-json、ext-openssl、ext-pdo全部启用 - 检查
config/app.php中App\Providers\AuthServiceProvider::class已在providers数组里注册——漏掉这个,后续Passport::routes()会报 Class not found
国内用户建议提前配镜像源:composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/
php artisan migrate 报 SQLSTATE[42000] 怎么办
这是最典型的“装了但跑不起来”错误,错误信息里带 Syntax error or access violation,基本等于 MySQL 版本太低。
工作流任务拆解与模型编排技能。使用场景:(1) 收到复杂工作任务需要拆解为可执行步骤,(2) 需要为不同步骤选择最合适的模型,(3) 需要跟踪工作流进度和模型使用情况,(4) 长时间任务卡住需要问题诊断和解决方案。
- 执行
mysql --version,若低于5.7.8(或 MariaDB10.2.7),直接放弃迁移——Passport 的oauth_access_tokens表依赖 JSON 字段,老版本不支持 - 别硬改迁移文件删 JSON 类型,那会破坏 Passport 内部逻辑;更稳妥的替代方案是换
laravel/socialite做第三方登录 - 若可升级 MySQL,升级后清空
migrations表中失败记录(php artisan migrate:rollback往往不生效),再重跑php artisan migrate
php artisan passport:install 后 token client_id 总是 1
这不是安装失败,是 Passport v8+ 开始的行为变更:它不再读 PASSPORT_PERSONAL_ACCESS_CLIENT_ID 环境变量,而是查数据库标记。
- 运行
php artisan passport:install --force,它会重建 client 并自动设personal_access_client = 1 - 如果已有 client 但 ID 不是 1,手动执行 SQL:
UPDATE oauth_clients SET personal_access_client = 1 WHERE id = X(X 替换为你实际的 client ID) - 别碰
.env里的PASSPORT_*配置项,它们对 personal access token 已无效
Laravel 10 中 Auth::user() 返回 null 的真实原因
不是 token 错了,是 guard 没切对。Passport 默认用 passport guard,不是 api 或 web。
- 检查
config/auth.php的'defaults' => ['guard' => 'api']—— 这里必须改成'passport' - API 请求头必须是
Authorization: Bearer {token},注意中间是英文空格,不能用单引号包 token,也不能多换行 - 确保
RouteServiceProvider@mapApiRoutes()末尾调用了Passport::routes(),否则/oauth/token根本没注册,请求直接 404
最容易被忽略的是:Laravel 10 默认的 api guard 驱动是 token,你没显式改成 passport,Auth 就压根不会走 Passport 的 token 解析逻辑。

















