Laravel Cloud 上的 passport 库环境变量问题 运行
Laravel passport library environment variable problem on Cloud Run
我在我的 laravel 8 项目上使用护照库,但我遇到了一个问题,因为我无法使用默认命令生成我的文件 php artisan passport:install
因为我在云端 运行无服务器,我必须使用环境变量。
所以我看到这个https://laravel.com/docs/9.x/passport#loading-keys-from-the-environment
当我通过 docker 组合发送变量并声明 APP_ENV=production
但当我 运行 在云中的生产服务器上 运行 我有这个错误:
exception: "LogicException"
file: "/app/vendor/league/oauth2-server/src/CryptKey.php"
line: 67
message: "Unable to read key from file -----BEGIN PUBLIC KEY...
我不明白为什么 passport 需要云上的文件 运行 而不是服务器环境变量。我测试过删除我的私钥和 public 中的所有回车 return 但它不起作用。也许我的 yaml 中的格式不正确?我不知道。
仔细查看您的屏幕截图后,我想我明白了证书验证失败的原因。
在 CryptKey.php
中,这一行 $this->isValidKey($keyPath, $this->passPhrase ?? '')
返回 false
,因为您的键中缺少 \n
(新行),导致 "Unable to read key from file -----BEGIN PRIVATE KEY-----..."
。证书需要采用特定格式,目前使用这些环境变量并非如此。
如果可能,请更改您的机密中的这种无效格式:
-----BEGIN PRIVATE KEY-----MIIJQgIBADANBgk...-----END PRIVATE KEY-----
收件人:
-----BEGIN RSA PRIVATE KEY-----
MIIJQgIBADANBgk...
-----END RSA PRIVATE KEY-----
如果这不起作用,您也应该尝试:
- 将证书作为文件导入,而不是使用 Secret Manager 中的文本区域
- 或者,在文本区域中明确使用
\n
PS。我的私人证书以 -----BEGIN RSA PRIVATE KEY-----
开头,而不是 -----BEGIN PRIVATE KEY-----
我在我的 laravel 8 项目上使用护照库,但我遇到了一个问题,因为我无法使用默认命令生成我的文件 php artisan passport:install
因为我在云端 运行无服务器,我必须使用环境变量。
所以我看到这个https://laravel.com/docs/9.x/passport#loading-keys-from-the-environment
当我通过 docker 组合发送变量并声明 APP_ENV=production
但当我 运行 在云中的生产服务器上 运行 我有这个错误:
exception: "LogicException"
file: "/app/vendor/league/oauth2-server/src/CryptKey.php"
line: 67
message: "Unable to read key from file -----BEGIN PUBLIC KEY...
我不明白为什么 passport 需要云上的文件 运行 而不是服务器环境变量。我测试过删除我的私钥和 public 中的所有回车 return 但它不起作用。也许我的 yaml 中的格式不正确?我不知道。
仔细查看您的屏幕截图后,我想我明白了证书验证失败的原因。
在 CryptKey.php
中,这一行 $this->isValidKey($keyPath, $this->passPhrase ?? '')
返回 false
,因为您的键中缺少 \n
(新行),导致 "Unable to read key from file -----BEGIN PRIVATE KEY-----..."
。证书需要采用特定格式,目前使用这些环境变量并非如此。
如果可能,请更改您的机密中的这种无效格式:
-----BEGIN PRIVATE KEY-----MIIJQgIBADANBgk...-----END PRIVATE KEY-----
收件人:
-----BEGIN RSA PRIVATE KEY-----
MIIJQgIBADANBgk...
-----END RSA PRIVATE KEY-----
如果这不起作用,您也应该尝试:
- 将证书作为文件导入,而不是使用 Secret Manager 中的文本区域
- 或者,在文本区域中明确使用
\n
PS。我的私人证书以 -----BEGIN RSA PRIVATE KEY-----
开头,而不是 -----BEGIN PRIVATE KEY-----