Obtener un error 500 al hacer una petición, es una de las respuestas que nunca deseamos obtener por parte del servidor.
Sus causas pueden ser varias y sus soluciones diversas, por lo que es importante saber identificar la raíz del problema.
Una respuesta de error 500 nos puede traer varios problemas, desde mal posicionamiento en buscadores, hasta descenso de ventas e inconformidad por parte de los clientes.
Para evitar esto, es importante atender este problema de manera rápida y efectiva, y prever su aparición con futuros cambios que se realicen.
¿Qué es el error 500?
El error 500 es un estado HTTP que se utiliza para informar sobre una falla originada del lado del servidor, el cual puede ser muy general y solamente nos indica que ocurrió un problema, pero no se da más información al respecto.
Un sitio web puede expresar esta falla de distintas formas, dependiendo del tipo de servidor web que utilice o la forma en que se manejan las excepciones en el código, pero al final el mensaje será muy parecido, y terminarás con la idea de que simplemente ha ocurrido un problema general en el servidor.
Causas de los errores 500 en una web
Cuando obtenemos un error de tipo 500 como respuesta a nuestra petición, lo único que sabemos es que ocurrió un error interno en el servidor, y esto puede resultar bastante ambiguo, ya que no se nos especifica el problema exacto o la falla que origino esa respuesta, por lo que para averiguar las causas se debe realizar una investigación más profunda.
Un error 500 puede ser causado por una amplia gama de problemas:
- Desde una base de datos mal configurada,
- una petición que arrojó un timeout,
- uso de sintaxis inválida en nuestro código,
- bloqueo de peticiones,
- la existencia de muchas conexiones hacia el mismo puerto o servidor,
- el establecimiento de permisos erróneos en un archivo,
- el alcance de los límites de memoria de PHP,
- etc.
Encontrar la causa del error
Si eres administrador de la web que presenta el problema, te resultará un poco más sencillo poder encontrar la razón por la que pasa este problema, sin embargo si no lo eres o simplemente no tienes la confianza para mover este tipo de configuración.
Entonces quizás sea una buena idea pedir ayuda o ponerse en contacto directamente con otra persona que consideres más capacitada.
En muchas ocasiones cuando no tenemos mucho conocimiento técnico, no queda más que acudir a un soporte PrestaShop Certificado, que nos pueda brindar un servicio adecuado para solucionar el problema.
Descartar problemas de navegador o conexión a Internet
Una de las primera cosas que nos podemos aventurar a hacer desde nuestro lado como cliente, es realizar una recarga forzada con la combinación de teclas Ctrl+F5 en Windows o Linux, o con Cmd+Shift+R en MacOS.
Este tipo de recarga ignora el caché que se encuentra almacenado y carga todos los recursos desde el servidor directamente.
Otra cosa que se puede intentar en esta etapa es borrar el caché y las cookies que tenemos asociadas al sitio de la tienda online en nuestro navegador.
Es un cambio sencillo y a veces puede pasarse por alto, si el problema está de nuestro lado esto lo solucionará, pero lo más probable es que necesitamos indagar más.
Como mencionamos anteriormente, el estado HTTP 500 es un error del lado del servidor, lo que significa que el problema probablemente no sea con su ordenador o conexión a Internet, sino con el servidor donde se encuentra montada su tienda online.
Habilitar el modo debug
Si tienes los poderes de administrador en una tienda online elaborada con PrestaShop o cuentas con acceso al servidor para poder editar los archivos de configuración, una de las mejores opciones para encontrar la raíz del problema, es activar el modo debug.
Activar el modo debug de PrestaShop nos va a permitir detectar la gran mayoría de los problemas que ocurren con el sitio, simplemente basta con habilitarlo, recargar la página y a partir de ese momento se mostrará un mensaje detallado con todos los errores.
Para habilitarlo se puede optar por uno de los dos métodos, el primero de ellos consiste en hacerlo desde el administrador, para ello se debemos seguir los siguientes pasos:
- Ir a la opción “Parámetros avanzados”.
- Seleccionar “Rendimiento” en el menú.
- Finalmente en la configuración “Modo depuración” elegimos la opción “Sí”.
La segunda opción es hacerlo modificando directamente el archivo .php de configuración.
Este se puede acceder mediante FTP o en algunos casos por SSH, en caso de contar con los permisos necesarios.
El archivo que debemos localizar es config/defines.inc.php, y dentro de él la línea que dice “define(‘_PS_MODE_DEV_’, false);”, la cual debemos cambiar por “define(‘_PS_MODE_DEV_’, true);”.
Recuerda desactivar este modo de depuración una vez que hayas concluido con tus pruebas.
Ver registros en logs
En caso de que el modo debug no te de toda la información que estés buscando, otra buena opción es analizar los registros que se arrojan en los logs de Prestashop.
Desde la versión 1.7 de Prestashop, los logs se pueden encontrar dentro del directorio /var/logs, en esta ubicación deberás encontrar archivos con los nombres dev.log o prod.log, dependiendo el ambiente donde estés corriendo el modo debug.
De igual manera puedes ver los logs generales de php, como es el caso del error_log y el access_log, los cuales normalmente se encuentran en ese mismo directorio o en el directorio raíz.
¿Cómo solucionar un error 500?
Ahora que ya cuentas con los datos necesarios para encontrar la fuente del error, es importante empezar a buscar la mejor solución para el problema.
Dependiendo del origen del problema será la solución que te tocará aplicar, si el error es producido por un exceso de tiempo de espera, habrá que verificar que la configuración del servidor y de PHP sea la adecuada, estableciendo tiempos más amplios o mejorando los scripts que estamos corriendo.
Si el error es por un mal direccionamiento entonces habrá que verificar que nuestros archivos .htaccess se encuentran bien estructurados, y así sucesivamente.
Permisos
Uno de los errores más comunes a corregir son aquellos relacionados a los permisos, que si bien son fáciles de corregir algunas veces pueden ser difíciles de encontrar por ser algo que damos por sentado.
Muchas veces creamos carpetas que por alguna u otra razón tienen un permiso distinto al resto, quizás sólo se le dio permiso de lectura y no escritura, o su dueño es un usuario distinto al que utiliza tu servidor web para acceder los archivos.
Para solucionar esto se debe dar permisos adecuados a cada carpeta mediante un comando, si la carpeta debe poder ser accedida por cualquier persona, entonces debe tener 777 en sus permisos, si solo el propietario de la carpeta o archivo puede leer, escribir o ejecutar, entonces se le debe de dar un 755, si únicamente el propietario puede leer y escribir y todos los demás sólo pueden leer entonces se le da un 644.
Este valor esta basado en la representación binaria de los permis rwx (lectura, escritura y ejecución), rwx = 111 que en binario representa al 7, rx = 101 que en binario representa al 5 y r = 100 que en binario seria el 4.
Archivos .htaccess
Muchas veces este tipo de error son detectables gracias a que el modo debug no tira ningún mensaje, por ello para verificar que un archivo .htaccess es el que está fallando, podemos renombrarlo y ver qué es lo que pasa, si el error se fue entonces ya lograste identificar la fuente.
Generalmente en este tipo de archivos, los causantes del error 500 son las reglas de rewrite mal elaboradas, un carácter mal escrito es suficiente para causar un mal routing, lo que a su vez puede llevar a un error interno del servidor.
Es importante tener copias de seguridad de tus .htaccess, con el fin de que si un error se empieza a presentar después de un cambio, se pueda revertir y volver al estado anterior.
Tiempo de espera
En otras ocasiones el error 500 es el producto de un comando, script o proceso que está tomando mucho tiempo en ser ejecutado y por consiguiente llega al límite del tiempo de espera o de ejecución, y por ello el servidor lanza un mensaje de error.
Existen dos formas de abordar este problema, una de ellas es tratar de depurar el proceso que está causando el problema, buscando quizás codificarlo mejor, analizar las partes que están tardando más, utilizar algún otro patrón de diseño, o cualquier otro cambio que pemita mejorar los tiempos.
La otra opción es simplemente ir a la configuración del servidor y aumentar el tiempo de espera. Si por ejemplo el tiempo está establecido en 30 segundos, puedes modificarlo a 1 minuto, para que de esa manera el tiempo resulte suficiente para la ejecución de todos los procesos.
Hay que aclarar que para poder modificar el tiempo de espera es necesario ponerse en contacto con tu proveedor de alojamiento, para que ellos mismos puedan realizar el cambio, o te den permiso de hacerlo.
Falta de módulos de PHP o uso de paquetes obsoletos
Existe la posibilidad de que cuando actualices la versión de tu PrestaShop, identifiques que algunos de los módulos que utilizaban anteriormente ahora se encuentren obsoletos y no sean compatibles con la nueva versión.
Esto puede llegar a generar errores de tipo 500, y para solucionarlos será necesario verificar todos los addons que se encuentren instalados en nuestro sistema y comprobar que cuenten con la versión más nueva o por lo menos la mínima requerida para que tu PrestaShop funcione correctamente.
Otra posibilidad es que lo que se encuentre desactualizado, o roto, sean los módulos que componen tu configuración de PHP.
Debes comprobar que tengas instalados todos los módulos necesarios para correr PrestaShop, entre los cuales se encuentran Mcrypt, OpenSSL, Zip, Curl, PDO, GD, etc.
Conclusión
Como hemos visto, el error 500 de Prestashop puede ocurrir debido a muchas razones, desde límites de memoria PHP, problemas de permisos de archivos, errores de conexión a la base de datos, hasta errores humanos en una regla de routing mal escrita.
En este artículo hemos enumerado algunas de las razones principales de este error y cómo puedes resolverlo tú mismo.
Sin embargo puedes encontrarte con casos más difíciles o incluso que representan más riesgo, por lo que insistimos que si haz llegado a un punto donde sientes que no puedes avanzar, lo mejor es contactar a un soporte profesional para que te brinde ayuda con tu problema.
modificado el 8 octubre, 2020 21:34