【问题标题】:oauth-private.key does not exist or is not readableoauth-private.key 不存在或不可读
【发布时间】: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

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

【问题讨论】:

    标签: php laravel laravel-5 oauth-2.0 laravel-passport


    【解决方案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】:
                1. 运行:php artisan passport:install。 如果收到类似“加密密钥已存在。使用 --force 选项覆盖它们”之类的消息。 然后运行
                2. 运行:php artisan config:clear
                3. 运行:php artisan key:generate。 最后
                4. 运行:php artisan config:clear

                【讨论】:

                  【解决方案10】:

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

                  php artisan passport:keys
                  

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

                  【讨论】:

                    猜你喜欢
                    • 1970-01-01
                    • 2021-03-20
                    • 1970-01-01
                    • 1970-01-01
                    • 2017-01-17
                    • 1970-01-01
                    • 1970-01-01
                    • 1970-01-01
                    • 2018-06-27
                    相关资源
                    最近更新 更多