You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

调整PHP版本后出现OAuth2范围无效错误,恢复后仍未解决

解决PHP版本升级后Passport createToken的Scope无效错误

问题背景

将composer.json的PHP版本要求从:

"require": {
   "php": "^7.3|^8.0"
}

修改为:

"require": {
   "php": "^7.4|^8.0"
}

执行composer update后,调用$user->createToken('Customer Access Token', ['user']);时触发错误:

The requested scope is invalid, unknown, or malformed in file vendor\league\oauth2-server\src\Exception\OAuthServerException.php on line 182

删除vendor文件夹、composer.lock并使用旧锁文件重装依赖后问题仍存在。

解决方案

1. 清理Laravel全量缓存

缓存残留可能导致依赖回滚后逻辑仍异常,执行以下命令:

php artisan cache:clear
php artisan config:clear
php artisan route:clear
php artisan view:clear
php artisan optimize:clear

2. 确认Scope已正确注册

Passport需要在AuthServiceProvider中显式注册所有使用的Scope,检查app/Providers/AuthServiceProvider.php的boot方法:

use Laravel\Passport\Passport;

public function boot()
{
    $this->registerPolicies();

    // 确保注册了'user'这个Scope
    Passport::tokensCan([
        'user' => '访问用户资源',
        // 其他需要的Scope...
    ]);
}

如果未注册userScope,添加后重新运行应用。

3. 强制同步Passport与OAuth2 Server版本

PHP版本变更可能触发了依赖的隐性升级,导致Passport与league/oauth2-server版本不兼容:

  • 在composer.json中明确指定当前项目兼容的Passport版本(例如"laravel/passport": "^10.4",需匹配你的Laravel版本)
  • 执行命令重新安装依赖:
composer update laravel/passport --with-all-dependencies
  • 若仍有问题,删除composer.lock和vendor文件夹,执行composer install重新生成兼容的依赖环境。

4. 检查PHP版本与Passport的兼容性

确认当前使用的Passport版本支持PHP7.4:

  • Laravel Passport 10.x及以上版本支持PHP7.4+
  • 若使用的Passport版本过低,需升级到兼容版本(同时确保与Laravel主版本匹配)

内容的提问来源于stack exchange,提问作者Tehseen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.23 12:09:57