oauth-private.ключ не существует или не читается в laravel

#php #laravel

#php #laravel

Вопрос:

Я клонирую проект из gitlab, написанный Laravel Framework 6.13.1, который использует библиотеку passport. Как обычно, я сначала выполнил установку composer, но получил эту ошибку :

    LogicException  : Key path "file://C:xampphtdocsmyprojectstorageoauth-private.key" does not exist or is not readable

  at C:xampphtdocsmyprojectvendorleagueoauth2-serversrcCryptKey.php:48
    44|             $keyPath = 'file://' . $keyPath;
    45|         }
    46|
    47|         if (!file_exists($keyPath) || !is_readable($keyPath)) {
  > 48|             throw new LogicException(sprintf('Key path "%s" does not exist or is not readable', $keyPath));
    49|         }
    50|
    51|         if ($keyPermissionsCheck === true) {
    52|             // Verify the permissions of the key

  Exception trace:

  1   LeagueOAuth2ServerCryptKey::__construct("file://C:xampphtdocsmyprojectstorageoauth-private.key")
      C:xampphtdocsnote-servervendorlaravelpassportsrcPassportServiceProvider.php:248

  2   LaravelPassportPassportServiceProvider::makeCryptKey("private")
      C:xampphtdocsnote-servervendorlaravelpassportsrcPassportServiceProvider.php:214

  

теперь я не могу запустить команду php artisan, я получил ту же ошибку

в чем проблема? почему я получил эту ошибку? я ищу его в Интернете, кто-то говорит запустить php artisan passport: install или другую команду, но сейчас я не могу запустить php artiasan, потому что получил ту же ошибку

Комментарии:

1. попробуйте: паспорт php artisan: установить

2. Дайте разрешение sudo chown www-data:www-data storage/oauth-*.key

3. @sta: я использую Windows

4. oauth-private.key файл существует в myproject storage ?

5. @sta: нет, я клонирую porject из gitlab

Ответ №1:

Поскольку /storage/*.key находится в файле .gitignore, поэтому, если вы извлекаете проект, возможно, отсутствует ключ при запуске

  php artisan passport:keys
  

сгенерирует для вас новые ключи.

Комментарии:

1. ваш ответ неверен, как я уже упоминал, я не могу запустить эту команду, потому что у меня нет доступа к php artisan, если я запускаю php artisan …. я получил ту же ошибку

2. удалите папку поставщика, а затем запустите обновление composer

3. не работает. после удаления поставщика и попытки обновления или установки composer я получил ту же ошибку

Ответ №2:

Это взлом, и я просто использовал его, чтобы заставить мою тестовую среду работать, поэтому я бы не рекомендовал делать это для производственных сред, но мне удалось заставить это работать, выполнив следующее перед запуском composer install :

Сначала я сгенерировал ключи вручную:

 ssh-keygen -t rsa -b 4096 -f ./storage/id_rsa amp;amp; mv ./storage/id_rsa ./storage/oauth-private.key amp;amp; mv ./storage/id_rsa.pub ./storage/oauth-public.key
  

Затем я убедился, что APP_KEY в моем .env файле есть действительный ключ, запустив php artisan key:generate его на другом компьютере и включив его в репозиторий; вы также можете добавить его в .env файл вручную. Основная причина, по которой это небезопасно, заключается в том, что этот ключ не должен быть включен ни в какие репозитории и должен существовать только на своем собственном компьютере по соображениям безопасности.

Это должно привести сборку в состояние, в котором вы можете запустить composer install , а затем выполнить следующее для установки passport:

 php artisan migrate
php artisan passport:install --force
  

Надеюсь, тогда все должно быть в рабочем состоянии.

Опять же, это хак, который я использовал, чтобы заставить мою тестовую среду работать, поскольку я предполагал, что была какая-то проблема с совместимостью с моими версиями Laravel / Passport и самой машиной.

Ответ №3:

Найдено другое решение для этой ошибки в паспорте.

  'api' => [
        'driver' => file_exists('file://'.Passport::keyPath('oauth-public.key')) ? 'passport' : 'session',
        'provider' => 'users',
    ],