简体   繁体   中英

oauth-private.key does not exist or is not readable

So, I imported another project from Bitbucket and tried to launch it using php artisan serve , I always get this error:

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

I don't get this error when I make a project myself, I can't run any other command. I tried 'php artisan key:generate', and got the exact same error.

I tried: composer update , and got this:

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

Anyone knows how to fix it? Thanks!

I think that this is due to Laravel Passport, you should try the following command:

php artisan passport:install

This command will create the encryption keys needed to generate secure access tokens. In addition, the command will create "personal access" and "password grant" clients which will be used to generate access tokens

Source: https://laravel.com/docs/5.4/passport

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

I found the solution Solution: In config/app.php I had to comment these lines:

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

Than you need to migrate the whole database again, than uncomment this line:

Laravel\Passport\PassportServiceProvider::class,

And run php artisan passport:install my application keys weren't working so I had to do:

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

And than I could do php artisan serve

Thanks!

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

so sample if you already install passpord and don't config run this command

php artisan passport:keys

If already doesnt install the passport package you must check the docs of passpord in Laravel docs

Step 1:

Only Run if oauth-private.key and oauth-public.key not exists in storage folder otherwise skip first step ..

php artisan passport:install

Step 2:

Clear configration and generate key

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

Step 3:

Change permission and owner like that :

sudo chown www-data:www-data storage/oauth-*.key
sudo chmod 600 storage/oauth-*.key
  1. Run: php artisan passport:install. If get message like "Encryption keys already exist. Use the --force option to overwrite them." Then run
  2. Run: php artisan config:clear
  3. Run: php artisan key:generate. And finally
  4. Run: php artisan config:clear

I have removed this bit: Passport::loadKeysFrom(__DIR__.'/../secrets/oauth'); from App\Providers\AuthServiceProvider and it fixed the issue.

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');
}

do this commands

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

Don't do this line until you have keys in a specific location for the file

in AuthServiceProvider.php

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

if you use heroku as deployment, try add this in composer.json at the script line

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

and then run this command

php artisan passport:install
php artisan config:clear
php artisan optimize

Depending on the environment you are using to deploy. If, for example, you are using a Heroku deploy, you may have to remove the folder containing the keys from gitignore before pushing and then later add it back. This worked for me after following the steps above.

firstly, search in oath-private-key in your application folder. copy it and go to App/provider folder. create a new folder, secret and oauth like that

App/Provider/Secret/Oauth and paste your oath-private-key here.

I hope it helps you.

For Windows OS. If you have already installed passport, or you are setting up an existing application and then facing this problem then try "php artisan passport:keys"

for my after i run composer install passport is already installed so php artisan passport:install does not help.

try to touch new file (oauth-private.key) to storage dir, then run command

php artisan passport:keys --force

this command 'll force override private key you touched and create "aouth-public.key" file. it 'll work fine

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM