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

Laravel 11项目执行命令时报Invalid key supplied错误求助

问题描述

环境配置:Laravel 11 - Ubuntu 24.04 - PHP 8.3 - Composer 2.7.1

从GitLab拉取Laravel项目后,执行composer install时出现以下错误:

Invalid key supplied at vendor/league/oauth2-server/src/CryptKey.php

所有php artisan命令都会触发相同错误,同时发现storage目录下没有密钥文件。项目的composer.json内容如下:

{
    "name": "laravel/laravel",
    "type": "project",
    "description": "The skeleton application for the Laravel framework.",
    "keywords": ["laravel", "framework"],
    "license": "MIT",
    "require": {
        "php": "^8.2",
        "aws/aws-sdk-php": "^3.308",
        "dedoc/scramble": "^0.9.0",
        "google/apiclient": "^2.16",
        "google/apiclient-services": "^0.362.0",
        "laravel/framework": "^11.0",
        "laravel/passport": "*",
        "laravel/socialite": "^5.14",
        "laravel/tinker": "^2.9",
        "owen-it/laravel-auditing": "^13.6",
        "pkpass/pkpass": "^2.3",
        "rap2hpoutre/fast-excel": "^5.4",
        "saloonphp/laravel-http-sender": "^3.0",
        "saloonphp/laravel-plugin": "^3.0",
        "saloonphp/saloon": "^3.0",
        "sentry/sentry-laravel": "^4.5",
        "spatie/laravel-data": "^4.6",
        "spatie/laravel-medialibrary": "^11.4",
        "spatie/laravel-permission": "^6.7"
    },
    "require-dev": {
        "barryvdh/laravel-ide-helper": "^3.0",
        "deployer/deployer": "*",
        "fakerphp/faker": "^1.23",
        "laravel/pint": "^1.15",
        "laravel/sail": "^1.26",
        "mockery/mockery": "^1.6",
        "nunomaduro/collision": "^8.0",
        "phpunit/phpunit": "11.1.3",
        "spatie/laravel-ignition": "^2.4"
    },
    "autoload": {
        "files": [
            "app/Support/helpers.php"
        ],
        "psr-4": {
            "App\\": "app/",
            "Database\\Factories\\": "database/factories/",
            "Database\\Seeders\\": "database/seeders/"
        }
    },
    "autoload-dev": {
        "psr-4": {
            "Tests\\": "tests/"
        }
    },
    "scripts": {
        "post-autoload-dump": [
            "Illuminate\\Foundation\\ComposerScripts::postAutoloadDump",
            "@php artisan package:discover --ansi"
        ],
        "post-update-cmd": [
            "@php artisan vendor:publish --tag=laravel-assets --ansi --force"
        ],
        "post-root-package-install": [
            "@php -r \"file_exists('.env') || copy('.env.example', '.env');\""
        ],
        "post-create-project-cmd": [
            "@php artisan key:generate --ansi",
            "@php -r \"file_exists('database/database.sqlite') || touch('database/database.sqlite');\"",
            "@php artisan migrate --graceful --ansi"
        ],
        "ide-helper": [
            "php artisan ide-helper:gen",
            "php artisan ide-helper:models --no-interaction --write --reset"
        ],
        "pint": [
            "./vendor/bin/pint"
        ],
        "clear-laravel-caches": [
            "@php artisan optimize:clear --env=testing"
        ],
        "refresh-testing-database": [
            "@php artisan qa:drop-parallel-test-databases --env=testing",
            "@php artisan migrate:fresh --env=testing"
        ],
        "test-coverage": [
            "@clear-laravel-caches",
            "@refresh-testing-database",
            "./vendor/bin/pest --coverage --parallel --recreate-databases"
        ],
        "test": [
            "@clear-laravel-caches",
            "@refresh-testing-database",
            "./vendor/bin/pest --parallel --recreate-databases"
        ],
        "test-coverage-xdebug": [
            "XDEBUG_MODE=coverage php artisan test --coverage"
        ]
    },
    "extra": {
        "laravel": {
            "dont-discover": []
        }
    },
    "config": {
        "optimize-autoloader": true,
        "preferred-install": "dist",
        "sort-packages": true,
        "allow-plugins": {
            "pestphp/pest-plugin": true,
            "php-http/discovery": true
        }
    },
    "minimum-stability": "stable",
    "prefer-stable": true
}
解决方案

这个错误源于项目依赖Laravel Passport,而Passport需要加密密钥完成初始化,但当前项目缺少必要的密钥文件和环境配置,且composer install触发的package:discover命令会提前加载Passport导致报错。按以下步骤解决:

  1. 跳过脚本完成依赖安装
    先执行不带脚本的composer安装,避免触发Passport的初始化检查:

    composer install --no-scripts
    
  2. 配置环境变量
    复制示例环境文件并设置基础配置:

    cp .env.example .env
    

    编辑.env文件,确保APP_KEY字段存在(后续会自动生成),并配置好数据库等必要信息。

  3. 生成Laravel应用密钥
    执行命令生成APP_KEY:

    php artisan key:generate
    
  4. 生成Passport加密密钥
    现在可以正常执行artisan命令,生成Passport所需的密钥文件:

    php artisan passport:keys
    

    执行后会在storage/oauth-private.key和storage/oauth-public.key生成密钥文件。

  5. 执行剩余的composer脚本
    最后运行composer的post-install脚本,完成包发现和其他初始化:

    composer run-script post-autoload-dump
    

完成以上步骤后,再执行php artisan命令或后续操作就不会再触发密钥错误了。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 17:34:53