Laravel Passport配置环境变量后仍读密钥文件 无法适配Vapor问题求助
解决方案
前置检查
- 确认你发布的
config/passport.php中公私钥配置项已正确关联环境变量,对应配置应为:'private_key' => env('PASSPORT_PRIVATE_KEY'), 'public_key' => env('PASSPORT_PUBLIC_KEY'), - 删除本地
storage目录下已存在的oauth-private.key、oauth-public.key文件,避免程序优先读取本地文件 - 确认
.env文件中没有配置PASSPORT_KEY_PATH变量,如有请删除该配置项 .env中填写的公私钥需要完整包含首尾标识(-----BEGIN PUBLIC KEY-----、-----END PUBLIC KEY-----等),所有换行替换为\n转义字符,整段用双引号包裹,示例格式:PASSPORT_PUBLIC_KEY="-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA...\n...\n-----END PUBLIC KEY-----" PASSPORT_PRIVATE_KEY="-----BEGIN PRIVATE KEY-----\nMIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQC...\n...\n-----END PRIVATE KEY-----"
强制加载环境变量密钥
如果完成前置检查后仍报错,可在服务提供者中手动指定密钥优先级,跳过文件读取逻辑:
- 打开
app/Providers/AppServiceProvider.php,在boot方法中添加如下代码:
use Laravel\Passport\Passport; public function boot() { // 保留原有业务代码 if (env('PASSPORT_PRIVATE_KEY') && env('PASSPORT_PUBLIC_KEY')) { Passport::privateKey(env('PASSPORT_PRIVATE_KEY')); Passport::publicKey(env('PASSPORT_PUBLIC_KEY')); } }
- 执行
php artisan config:clear清除本地配置缓存,重启服务后验证即可。
生产环境部署注意事项
Vapor平台部署时不需要做额外修改,直接把PASSPORT_PRIVATE_KEY、PASSPORT_PUBLIC_KEY添加到Vapor的环境变量配置中即可,平台会自动加载生效。
内容的提问来源于stack exchange,提问作者Joel Joel Binks
相关产品推荐
相关产品推荐

