Laravel 10 在 PHP 8.1 中集成 Passport 需四步闭环:环境验证(含 intl 等扩展)、Composer 创建时锁定 ^10.0 版本、Passport 安装 ^11.0 并执行 migrate 与 passport:install、配置 Personal Access Token 过期时间并正确注册路由。

在 PHP 8.1 环境中安装 Laravel 10 并集成 Passport 实现 API 认证,关键不在“能不能装”,而在于四步闭环:环境真实达标、版本严格对齐、安装流程不跳步、配置位置不犯错。漏掉任一环,轻则 composer require 报包不存在,重则 passport:install 崩溃或 API 请求始终 401。
确认 PHP 8.1 环境真实就绪
别只信 php -v,要验证扩展是否被加载:
- 运行
php -m | grep -E "(mbstring|openssl|pdo|tokenizer|xml|ctype|json|intl|fileinfo)",每项都必须有输出 - Mac 用户常见缺
intl,用brew install php@8.1重装并确保php --ini显示的php.ini中extension=intl已取消注释 - Linux(如 Ubuntu)缺扩展时执行:
sudo apt install php8.1-intl php8.1-fileinfo php8.1-xml - 宝塔用户进「PHP管理」→「安装扩展」,务必勾选
fileinfo(否则composer install直接失败)
用 Composer 创建 Laravel 10 项目(锁定版本)
不加版本约束极易拉到 Laravel 11 或 dev 分支,导致与 PHP 8.1 冲突:
- 先设国内镜像(推荐腾讯云):
composer config -g repo.packagist composer https://mirrors.cloud.tencent.com/composer/ - 创建项目:
composer create-project laravel/laravel:^10.0 myapp(必须写^10.0) - 进入项目后立即生成密钥并清缓存:
cd myapp && php artisan key:generate && php artisan config:clear && php artisan cache:clear
安装并配置 Passport(注意版本与迁移)
Laravel 10 必须配 Passport ^11.0,不是 ^10.0;且数据库结构必须完整:
立即学习“PHP免费学习笔记(深入)”;
- 安装命令:
composer require laravel/passport:^11.0(不能省略^11.0) - 执行迁移:
php artisan migrate(确保CreateOauthClientsTable已运行,表中含personal_access_client字段) - 生成加密密钥与客户端:
php artisan passport:install(若报createPersonalAccessClient()未定义,说明迁移缺失,先php artisan migrate:rollback --step=1回退再重跑) - 在
routes/api.php顶部添加:Passport::routes();(不要放在任何中间件组内,尤其不能套auth:sanctum)
启用 Personal Access Token 并设置有效期
默认 Personal Access Token 永不过期,生产环境必须手动限制:
- 在
App\Providers\AuthServiceProvider的boot方法中添加:Passport::personalAccessTokensExpireIn(now()->addDays(7)); - 测试获取 Token:
POST /api/oauth/personal-access-tokens,携带name字段,响应中会返回token - 后续 API 请求在 Header 加:
Authorization: Bearer your_token_here



















