No Laravel, quando você tenta executar php artisan, às vezes você pode encontrar o erro: Unable to read key from file file:///var/www/mysite/storage/oauth-private.key at vendor/league/oauth2 -server/src/CryptKey.php:64 é lançado.

Este erro ocorre quando o Laravel não consegue encontrar ou acessar o arquivo de chave privada (oauth-private.key) usado para a autenticação OAuth2. Para resolver esse problema, siga as etapas fornecidas nesta postagem.

Outra mensagem de erro que pode ser lançada é: oauth-private.key does not exist or is not readable.

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

Para resolver esse problema, siga estas etapas:

  1. Verifique a existência dos arquivos de chave private e pública

Certifique-se de que os arquivos oauth-private.key e oauth-public.key existam no diretório storage do seu projeto Laravel, geralmente localizado em storage/app. Se esses arquivos não existirem, você precisará gerá-los.

  1. Gere os arquivos de chave

Se os arquivos de chave (private e public keys) estiverem faltando, você pode gerá-los usando o seguinte comando do Artisan:

php artisan passport:install

Este comando irá gerar os arquivos oauth-private.key e oauth-public.key e colocá-los no diretório de storage.

Se você já instalou o Laravel Passport e só precisa regenerar as chaves, você pode usar o seguinte comando:

php artisan passport:keys --force

Este comando forçará a geração de novos arquivos oauth-private.key e oauth-public.key, substituindo quaisquer chaves existentes.

  1. Defina as permissões corretas

Certifique-se de que os arquivos de chave tenham as permissões corretas para que seu servidor da web possa lê-los. Você pode usar o comando chmod para definir as permissões:

chmod 600 storage/oauth-private.key
chmod 600 storage/oauth-public.key

Isso definirá as permissões de leitura e gravação apenas para o proprietário dos arquivos.

  1. Crie links simbólicos

Esta etapa é necessária se você estiver executando o Laravel em um ambiente de hospedagem compartilhada (shared host), pode ser necessário criar links simbólicos para os arquivos principais. Execute os seguintes comandos:

ln -s /caminho/para/seu/laravel/storage/app/oauth-private.key oauth-private.key
ln -s /caminho/para/seu/laravel/storage/app/oauth-public.key oauth-public.key

Certifique-se de substituir /caminho/para/seu/laravel pelo caminho real para o seu projeto Laravel.

  1. Atualize o arquivo .env

Certifique-se de que as variáveis APP_URL e APP_STORAGE em seu arquivo .env tenham os valores corretos:

APP_URL=http://seudominio.com
APP_STORAGE=storage/app

Substitua http://seudominio.com pelo seu domínio real.

Este não é um passo essencial a seguir para resolver o problema, mas é uma boa prática ao usar o Laravel para construir seus projetos.

  1. Limpe o cache de configuração

Execute o seguinte comando para limpar o cache de configuração:

php artisan config:clear

Seguindo estas etapas, você deve resolver o erro “oauth-private.key does not exist or is not readable” em seu projeto Laravel.

Considerações finais

Depois de seguir essas etapas, o erro deve ser resolvido. Se você ainda encontrar problemas, verifique novamente os caminhos de arquivo, permissões e variáveis .env e certifique-se de que seu pacote Laravel Passport esteja corretamente instalado e atualizado.