Solución al error 'getaddrinfo failed' en Laravel
El error getaddrinfo failed es un error propagado de PHP que indica básicamente que no se ha podido resolver el nombre de host al conectarse a algún servicio. Generalmente sale cuando el host de base de datos, colas o cache no ha podido resolverse. Lo primero que debes notar es en que servicio ha ocurrido este error, a continuación tienes en ejemplo de este error en la conexión con redis.
RedisException
php_network_getaddresses: getaddrinfo failed: Name or service not known
at vendor/laravel/framework/src/Illuminate/Redis/Connectors/PhpRedisConnector.php:135
131| if (version_compare(phpversion('redis'), '5.3.0', '>=')) {
132| $parameters[] = Arr::get($config, 'context', []);
133| }
134|
> 135| $client->{($persistent ? 'pconnect' : 'connect')}(...$parameters);
136| }
137|
138| /**
139| * Create a new redis cluster instance.
+26 vendor frames
27 artisan:37
Illuminate\Foundation\Console\Kernel::handle()
En esencia, significa que php no ha podido iniciar una conexión con redis debido al nombre del host. Por lo cuál, deberás verificar los datos de tu conexión a redis.
REDIS_HOST=127.0.0.1
REDIS_PASSWORD=null
REDIS_PORT=6379
Algo muy común que sucede con Laravel, es que si colocaste tu cache driver con redis, es decir, así
CACHE_DRIVER=redis
Y este proceso falló por el error visto anteriormente, aún así en el bootstraping de la aplicación ya se guardaron en cache los valores de los archivos de configuración, por lo que si intentas cambiar tu driver de cache o la misma configuración de redis esta será ignorada dejándonos en un bucle de error dado que no podemos limpiar dicha configuración con cache:clear
.
La solución a este problema consiste en eliminar el cache del bootstrap de la aplicación, en síntesis borrar el siguente archivo.
rm boostrap/cache/config.php