Uno de los errores más comunes y con los que nos encontramos día a día los webmasters es con el Error 500. Seguramente más de una vez te ha pasado que te lo has encontrado, ya sea luego de modificar algún archivo, actualizar algún tema, plugin, etc.
Este error generalmente ocurre por fallos en la programación; lo peor de todo es que generalmente deja de funcionar el sitio a causa de él y tampoco nos da mucha información sobre cómo solucionarlo. De hecho, es un error tan común que ya hemos hablado anteriormente de él en: Error 500 en Joomla.
Una gran parte del tiempo el Error 500 en Laravel, causa que nuestro sitio nos devuelva un mensaje de error (“Whoops, looks like something went wrong.”) o bien una pantalla blanca, la cual no nos indica para nada lo que está sucediendo.
Sin lugar a dudas las causas por las cuales te puedes encontrar con un Error 500 en tu sitio web son muchas, especialmente si te encuentras trabajando en ella y realizando cambios constantes. Es por ello que hoy veremos aquellas causas que muy a menudo terminan en un Error 500 en este framework tan usado en el mundo del desarrollo web.
Tengamos en cuenta que el siguiente post es específicamente para Laravel, si cuentas con un error 500 en un sitio hecho con WordPress te recomendamos leer: Error 500 en WordPress.
Incluye: Discos SSD, Panel cPanel y SSL Gratis desde $8,25/mes
[wp-svg-icons icon=»search-2″ wrap=»i»] ¿Cómo podemos detectar que tenemos un Error 500?
El primer paso para poder solucionar el error 500 en nuestro sitio, es saber que efectivamente lo tenemos. Aunque no debes preocuparte, detectarlo es sumamente sencillo.
El primer indicio de ello es el mensaje que hemos mencionado anteriormente, «Whoops, looks like something went wrong» el cual nos dejará una pantalla similar a la siguiente, aunque también se puede encontrar de diferentes formas, como puede ser simplemente una pantalla en blanco sin más. Más adelante veremos cómo saber por seguro que el error de tu sitio es el Error Interno de Servidor.
Igualmente, antes de realizar cualquier cambio, vamos a ver unos puntos importantes que debemos tener en cuenta no solamente para evitar que esto suceda, sino para poder mitigar estos y muchos otros errores rápidamente.
Hay dos cosas al menos, que siempre debemos tener muy presente y con las cuales podemos evitar y/o mitigar este tipo de errores.
- Utilizar un Software de Control de Versiones: una de las mejores recomendaciones que podemos darte es que, si no lo estás haciendo ya, comiences a utilizar algún software para controlar las versiones de tu proyecto. Son realmente fáciles de utilizar, además de que te salvarán horas de trabajo si por algún motivo pierdes ficheros en tu servidor web o tienes errores de este tipo. Es por ello que sin lugar a dudas debes utilizarlo en tu proyecto. Una de las mejores recomendaciones es Utilizar Git como Software de Control de Versiones aunque también puedes utilizar SVN, lo importante es que utilices uno.
- Realizar backups periódicamente: realizar backups no solamente es una buena medida de seguridad para evitar tener nuestro sitio offline durante mucho tiempo luego de errores 500, sino que para cualquier tipo de error en general, ya sea de nuestro lado por algún error de programación o del lado de hosting. Sin lugar a dudas, sin importar el error, tener backups es una de las mejores medidas a tomar para poder solventarlos en cualquier caso.
Ahora que ya contamos con nuestro software versionado y backups y que podremos realizar un rollback de cualquier cambio que realicemos. Es hora de ponernos manos a la obra para encontrar primeramente si tenemos un error 500 y sobretodo para solucionarlo cuanto antes!
Lo primero que podemos hacer para verificar si tenemos un error 500 es mirar las cabeceras de nuestro sitio, a ver qué status nos está retornando. Como todos sabemos, los códigos de estado HTTP nos dan mucha información, que es muy valiosa si sabemos cómo interpretarla. Esto no es nada complicado y podemos realizarlo desde cualquier navegador o bien desde la línea de comandos.
Viendo el status de nuestro sitio desde un navegador
Lo primero que debemos hacer es acceder al lugar de nuestra página donde estamos viendo el error a través de cualquier navegador. Allí utilizaremos la tecla “F12” para abrir la consola de Chrome, en nuestro caso. Por aquí puedes ver cómo abrir la consola de Firefox.
Si ésta no se abre, entonces te recomendamos verificar cómo abrirla desde la documentación según el navegador que utilices o bien realizarlo por consola directamente.
Una vez en la consola, vamos a la sección Network o Red, cargamos nuestro sitio nuevamente y allí veremos en la columna Status o Estado si el error que nos está dando es 500 u otro. Recuerda no realizar ningún tipo de filtro, de lo contrario puede que no lo veas. Debes asegurarte de mostrar todos los request que se realizan.
Viendo el status de nuestro sitio desde la consola
Otra forma muy rápida de ver qué error nos está dando el sitio es realizando un Curl por la consola. Para ello simplemente realizamos lo siguiente, cambiando «dominio.com» por nuestro dominio:
$ curl -I dominio.com HTTP/1.1 500 Internal Server Error Server: nginx/1.12.2 Content-Type: text/html; charset=UTF-8 Connection: keep-alive X-Powered-By: PHP/7.0.30 Cache-Control: no-cache, private date: Tue, 25 Sep 2018 21:40:07 GMT
Allí, al lado de la versión de protocolo HTTP, podemos ver el error con su título, en nuestro caso “500 Internal Server Error”.
[wp-svg-icons icon=»wand» wrap=»i»] ¿Cómo solucionar el Error 500 en Laravel?
Ahora que ya sabemos que efectivamente el error que estamos viendo es un error 500, lo que necesitamos saber para poder resolverlo es el por qué. Para ello y como primera medida debemos de activar los errores de Laravel o bien verificar qué nos está reportando en el error_log del sitio.
- Activar DEBUG en el sitio
Lo principal y lo mejor para poder ver el error sería activar el debug, ahora bien, esto no es recomendable en producción, ya que usuarios podrían ver información sensible. Si tu sitio está en producción entonces ve al siguiente punto, de lo contrario veamos cómo activar el debug en Laravel
Es en realidad muy sencillo y bastará con ingresar al directorio root de nuestro proyecto y editar el archivo «.env» allí colocaremos la variable APP_DEBUG en «true«. Luego de eso, deberíamos de poder ver el error claramente en el navegador.
Si ves que no cuentas con el archivo, entonces también puede ser el causante del error. Recuerda que siempre que realices la instalación de un proyecto Laravel, debes renombrar el archivo .env.example a .env y configurar allí las variables de entorno de tu aplicación.
- Verificar el error_log del sitio
Si tu sitio se encuentra en producción entonces lo mejor es buscar el archivo error_log en tu servidor. Debería de encontrarse en el mismo directorio que tu proyecto y contener información de por qué está fallando. Otra cosa que puedes hacer es verificar qué error muestra Laravel dentro del archivo «app/storage/logs/laravel.log» muchas veces allí se encuentra información relevante de los fallos de nuestros proyectos
Si aún así no logras encontrar por qué falla tu sitio, entonces te invitamos a verificar que no tengas ninguno de los errores que describimos a continuación.
- Directorios faltantes
Muchas veces nos podemos encontrar con que hay directorios que no se crean correctamente en Laravel, esto generalmente se da al crear un nuevo proyecto, pero también puede llegar a suceder en producción. Por eso es importante verificar que los siguientes directorios están bien creados y con sus permisos correspondientes (644 a archivos, y 755 a directorios).
bootstrap/cache/ storage/framework storage/framework/views storage/framework/sessions storage/framework/cache
- Errores en usuario y permisos
Otra cosa que nos puede estar sucediendo es que los permisos de los directorios en los cuales Laravel debe escribir sean incorrectos y por ello nos da el error.
Para poder solucionarlo debes verificar que los siguientes directorios tengan permiso de escritura y también el usuario correcto.
bootstrap/cache [Y todo lo que se encuentre dentro] storage [Y todo lo que se encuentre dentro]
- Otros errores
Si ninguno de los anteriores ha solucionado tu error, entonces lo mejor es que verifiques directamente dentro de los logs de Laravel o en el servidor. En la mayoría de los casos, si no es un error de permisos, carpetas o el archivo .env; entonces es un error de programación. Quizás te falta alguna librería, no estás utilizando la versión de PHP correcta o simplemente cuentas con un error de sintaxis en algún archivo.
Conclusión
Como vemos, el error 500 es sin duda uno de los errores más comunes, especialmente si eres un webmaster o si estás trabajando en tu sitio. Por suerte las causas si bien son muchas, son normalmente muy fáciles de encontrar y solucionar.
Lo que siempre debemos tener en cuenta, es encontrar primero la causa, lo cual se hace viendo los logs o activando nuestro DEBUG.
Una vez que tenemos el mensaje de error, ya estamos un paso más cerca de solucionarlo y lo más seguro es que con una búsqueda en Google o un ajuste de permisos quede solucionado.
Recuerda que si estás buscando alojamiento para tu proyecto en Laravel, en Infranetworking contamos con planes optimizados y especializados de Hosting Laravel para este framework, una plataforma que te permitirá desarrollar todas tus apps sin problema alguno.