#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',
],