oauth-private.key 不存在或不可读

Posted

技术标签:

【中文标题】oauth-private.key 不存在或不可读【英文标题】:oauth-private.key does not exist or is not readable 【发布时间】:2017-08-05 07:42:44 【问题描述】:

所以,我从 Bitbucket 导入了另一个项目并尝试使用 php artisan serve 启动它,我总是收到此错误:

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

我自己制作项目时没有收到此错误,我无法运行任何其他命令。我尝试了“php artisan key:generate”,得到了完全相同的错误。

我试过了:composer update,得到了这个:

Loading composer repositories with package information
Updating dependencies (including require-dev)
Package operations: 0 installs, 1 update, 0 removals
  - Updating spatie/laravel-permission (1.11.1 => 1.12.0) Downloading: 100%         
Writing lock file
Generating autoload files
> Illuminate\Foundation\ComposerScripts::postUpdate
> php artisan optimize


  [LogicException]                                                             
  Key path "file:///var/www/html/DesignViewer5/storage/oauth-private.key" doe  
  s not exist or is not readable                                               


Script php artisan optimize handling the post-update-cmd event returned with error code 1

有人知道怎么解决吗?谢谢!

【问题讨论】:

【参考方案1】:

我认为这是由于 Laravel Passport,您应该尝试以下命令:

php artisan passport:install

此命令将创建生成安全所需的加密密钥 访问令牌。此外,该命令将创建“个人访问” 和“密码授予”客户端,它们将用于生成访问权限 代币

来源:https://laravel.com/docs/5.4/passport

【讨论】:

你能在提到的路径中看到文件吗?如果可以,请查看权限/storage/oauth-private.key 没有。它不在那里。但这在其他文件中不是问题。 谢谢!我只是插入你的代码 php artisan passport:install,它对我有用【参考方案2】:

我找到了解决方案 解决方案: 在 config/app.php 我不得不评论这些行:

/*Laravel\Passport\PassportServiceProvider::class,
App\Providers\CodeGrantProvider::class,
Spatie\Permission\PermissionServiceProvider::class,*/

比你需要再次迁移整个数据库, 而不是取消注释这一行:

Laravel\Passport\PassportServiceProvider::class,

然后运行 ​​php artisan passport:install 我的应用程序密钥不起作用,所以我必须这样做:

php artisan config:clear
php artisan key:generate
php artisan config:clear

我做不到php artisan serve

谢谢!

【讨论】:

【参考方案3】:

执行此命令

sudo chown www-data:www-data storage/oauth-*.key
php artisan passport:install
php artisan config:clear
php artisan key:generate
php artisan config:clear

【讨论】:

【参考方案4】:

我在更新作曲家时遇到了同样的问题。我再次使用 php artisan passport:keys 生成了密钥,它解决了问题

【讨论】:

部署服务器时最有用,不想重新安装护照 php artisan passport:install 不会重新安装passport...如果已经安装,它将跳过安装并生成密钥...【参考方案5】:

在文件的特定位置有密钥之前不要执行此行

AuthServiceProvider.php

//Passport::loadKeysFrom('/secret-keys/oauth');

【讨论】:

【参考方案6】:

第一步:

仅当oauth-private.keyoauth-public.key 不存在时运行 存储文件夹,否则跳过第一步..

php artisan passport:install

第二步:

清除配置并生成密钥

 php artisan config:clear
 php artisan key:generate
 php artisan config:clear

第三步:

像这样更改权限和所有者

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

【讨论】:

【参考方案7】:

由于/storage/*.key.gitignore 中,因此如果您拉取项目,可能会丢失密钥,运行php artisan passport:keys 将为您生成新密钥。

【讨论】:

【参考方案8】:

我删除了这个位:Passport::loadKeysFrom(__DIR__.'/../secrets/oauth'); 来自App\Providers\AuthServiceProvider,它解决了这个问题。

https://laravel.com/docs/8.x/passport#deploying-passport

/**
 * Register any authentication / authorization services.
 *
 * @return void
 */
public function boot()

    $this->registerPolicies();

    Passport::routes();

    Passport::loadKeysFrom(__DIR__.'/../secrets/oauth');

【讨论】:

【参考方案9】:
    运行:php artisan passport:install。 如果收到类似“加密密钥已存在。使用 --force 选项覆盖它们”之类的消息。 然后运行 运行:php artisan config:clear 运行:php artisan key:generate。 最后 运行:php artisan config:clear

【讨论】:

【参考方案10】:

如果你已经安装了 passpord 并且不配置运行这个命令,那么示例

php artisan passport:keys

如果还没有安装护照包,你必须检查 Laravel 文档中的 passpord 文档

【讨论】:

以上是关于oauth-private.key 不存在或不可读的主要内容,如果未能解决你的问题,请参考以下文章

_LIR__与Laravel 5.5和OVH共享主机不一致

当图像已上传到文件夹中时,如何解决 laravel 中的“文件不存在或不可读”

脏读,不可重复读,幻读讲解

数据库并发事务存在的三个问题(脏读不可重复读幻读)

文件操作

并发 不同的隔离等级存在的问题