Laravel Passport 密钥路径 oauth-public.key 不存在或不可读

Laravel Passport Key path oauth-public.key does not exist or is not readable

Laravel 护照在尝试访问资源时显示此内容

Key path "file://C:\xampp\htdocs\rental_5.0\storage\oauth-public.key" does not exist or is not readable

你没有提到你的安装步骤。假设您执行了以下操作:

composer require laravel/passport

在里面注册服务提供者config/app.php

Laravel\Passport\PassportServiceProvider::class,

运行 迁移

php artisan migrate

最后使用

生成密钥
php artisan passport:install

我看到你正在 Windows 上试用。我看到一个 OpenSSL problem on Windows,可能对你有帮助。

我使用 Heroku。据我所知,Heroku 默认添加 OpenSSL 支持 (https://devcenter.heroku.com/articles/php-support)。

所有事情,例如 php artisan install:passport 都做到了 运行,没有任何问题,我的项目也可以在网上找到。

当我请求 php artisan route:list 时,我收到了这个异常:

[LogicException]
  Key path "file:///app/storage/oauth-private.key" does not exist or is not readable

我觉得和上面一样。

我在本地也成功地完成了所有事情。在这些步骤之后 git 显示我已将密钥归档在我的存储文件夹中,所以我提交并将它们推送到 Heroku。

这解决了问题,现在在 Heroku 上也一切正常。

(到处使用相同的密钥可以吗?)

我的 windows 机器上没有安装 OpenSSL

  1. 下载GnuWi
  2. bin/openssl.exe 提取到环境变量路径目录中(您可以在用户文件夹或其他内容中创建自己的 bin 文件夹,并将该路径添加到路径变量中)
  3. 打开一个新的命令提示符(现有的可能没有最新的环境变量)
  4. 运行 php artisan passport:install

https://github.com/laravel/passport/issues/48#issuecomment-241936338

已编辑

在 windows 中,通过使用 git BASH,您不需要安装任何其他软件,只需从 BASH 运行 php artisan passport:install 安装,它应该可以工作。

与 Ubuntu 有同样的错误,在我的情况下,问题出在权限上,运行 这解决了问题:

sudo chown www-data:www-data storage/oauth-*.key

我手动将 oauth_clients table 中的 password_client 值设置为 1 并且有效。

我们收到此错误是因为 passport 未正确安装

解决方案很简单 运行 这个命令:

php artisan passport:install

在本地系统上一切正常,在生产系统上面临同样的问题。在我的例子中,git 有充分的理由忽略了键。 刚刚在生产服务器上执行 php artisan passport:keys 一切正常。

可能是 storage/oauth-private.keystorage/oauth-private.key 不存在并且您导入了旧数据库。对于这种情况,请 运行 以下命令。

php artisan passport:keys

Try this solution if you imported the old database where passport related data already stored. Otherwise, follow the accepted answer.

我不知道这是否是理想的解决方案,但是从 .gitignore 中删除 /storage/*.key 然后推送对我来说是个窍门。

这是因为您没有使用护照密钥生成 Oauth 密钥。

运行

php artisan passport:keys

之后运行下面命令生成个人访问客户端

php artisan passport:client --personal

输入它询问您的详细信息。那你就大功告成了。

在我的情况下,它只是不起作用 - 我尝试每一次 - 可能是文件访问问题(但是 ls -la 看起来不错) - 所以我在其他机器上生成该密钥并复制到服务器 - 和 php artisan passport:install开始工作

直接转到 laravel 项目根目录中的 .gitignore 文件并删除 /storage/*.key 行。也许您的服务器不允许在目录中写入密钥文件。再次上传或发布您的存储库。

将此添加到 composer.json 对我有用:

"scripts": { "post-install-cmd": [ "php artisan clear-compiled", "php artisan optimize", "chmod -R 777 storage", "php artisan passport:keys" ], }

https://github.com/laravel/passport/issues/267#issuecomment-346627625