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

Laravel Passport无法从.env加载密钥 报密钥路径不存在或不可读

Laravel Passport 配置.env密钥解决文件不存在报错

报错原因

Passport默认加载逻辑会优先查找storage目录下的oauth-private.key、oauth-public.key物理文件,仅在.env添加密钥内容但未修改默认加载配置时,就会触发如下报错:

local.ERROR: LogicException: Key path "file:///application/storage/oauth-private.key" does not exist or is not readable in /application/vendor/league/oauth2-server/src/CryptKey.php:53

正确配置步骤

  • 确认.env内密钥格式正确
    密钥要保留原始的首尾标记和换行,不要额外转义字符、不要删除原有换行,配置示例:
    PASSPORT_PRIVATE_KEY="-----BEGIN RSA PRIVATE KEY-----
    MIIEpAIBAAKCAQEA1xZ7yJ7fZ6qXl3W9eR8tY7uI6oP5aS4dF3gH2jK1lM0nN9pO
    # 此处替换为你自己的完整私钥内容,保持原有换行格式
    xW9eR8tY7uI6oP5aS4dF3gH2jK1lM0nN9pO8iU7yT6rE5wQ4eR3tY2uI1oP0aS==
    -----END RSA PRIVATE KEY-----"
    
    PASSPORT_PUBLIC_KEY="-----BEGIN PUBLIC KEY-----
    MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA1xZ7yJ7fZ6qXl3W9eR8t
    # 此处替换为你自己的完整公钥内容,保持原有换行格式
    8tY7uI6oP5aS4dF3gH2jK1lM0nN9pO8iU7yT6rE5wQ4eR3tY2uI1oP0aSdFgH==
    -----END PUBLIC KEY-----"
    
  • 修改Passport配置文件
    打开项目下config/passport.php,找到private_key、public_key两个配置项,替换为直接读取env密钥内容的逻辑,不要拼接文件路径:
    'private_key' => env('PASSPORT_PRIVATE_KEY'),
    'public_key' => env('PASSPORT_PUBLIC_KEY'),
    
    注意:如果这两个配置原来写了storage_path('oauth-private.key')这类路径代码,必须删掉,否则还是会走文件查找逻辑。
  • 清除缓存生效
    在项目根目录执行artisan命令清除配置和应用缓存:
    php artisan config:clear
    php artisan cache:clear
    
  • 部署环境权限校验(Linux服务器必做)
    给项目目录和storage目录配置正确的所属用户和权限,避免权限导致的读取异常:
    # 将/application替换为你自己的项目根目录路径
    chown -R www-data:www-data /application
    chmod -R 755 /application/storage
    

配置完成后,Passport检测到传入的是完整密钥字符串而非文件路径,会直接加载字符串内容生成token,不会再去storage目录查找物理密钥文件,报错即可解决。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 17:09:24