×
Error 500 – Internal Server Error

Error 500 – Internal Server Error


Una de las peores cosas al abrir nuestro sitio es encontrarnos con un error 500 que inhabilita el sitio por completo.

Este tipo de errores, no solo pueden suceder de un momento a otro, sino que además es tan genérico y poco descriptivo que termina siendo frustrante para el administrador del sitio web. Lograr localizar el origen de los problemas puede ser un dolor de cabeza para cualquier webmaster o desarrollador.

Por eso hoy en esta guía te mostraremos los pasos necesarios para hacer un debug completo, poder localizar el origen del error 500, y aplicar en última instancia las soluciones adecuadas para que tu sitio vuelva a estar online cuanto antes.

No menos importante, tener un error 500 (o un error 403, que también inhabilita tu web) no solo implica que perderás visitas en tu web, sino que los bots como Google, Bing, etc, podrán notar que tu web está teniendo un fallo, pudiendo esto incidir de manera significativa en los rankings de tu sitio a nivel SEO.

¿Qué es un Error 500?

Un error 500 es un error interno de servidor, cuando lo vemos en pantalla aparece textualmente como: «Error 500 – Internal Server Error«.

Es decir, es un error producido de lado del servidor, pero que generalmente está relacionado con configuraciones de la página donde se muestra.

Casi siempre que se produce un error 500 este es provocado por algún conflicto del servidor o en una sus configuraciones y que desembocan en un Fatal Error de PHP.

En numerosos CMS, frameworks y sitios web se le puede encontrar bajo estas descripciones:

  • HTTP 500 – Internal Server Error
  • Internal server error
  • error HTTP 500
  • 500 Internal Server Error
  • 500 error
  • HTTP Error 500
  • Temporary Error (500)

Configurar PHP para mostrar los errores

Para hacer el debug y encontrar el problema el primer paso es activar el valor display_errors del archivo php.ini.

Si se utiliza los servidores de hosting profesional de Infranetworking se puede hacer fácilmente desde Editor de PHP de MultiPHP, donde se debe configurar la variable display_errors en On y guardar los cambios.

Aunque ya aparezca marcado es un buen consejo igualmente dar salvar los cambios para sobrescribir los archivos de configuración. Si se utiliza otro proveedor igualmente se puede hacer modificando el archivo php.ini del servidor web.

Una vez activado se puede recargar la página, si ya se muestran los errores se puede avanzar y saltar el siguiente paso. Sin embargo, si se activo el valor display_errors y aún no muestra errores puede que haya que activar el modo debug del propio sitio.

Modo debug para encontrar origen del error 500

Dependiendo de la configuración del sitio, puede que se necesite activar el modo debug del mismo y el modo de hacerlo puede variar de un gestor a otro, por eso vemos los más comunes.

WordPress

Para activar el modo debug en WordPress se debe ir al archivo wp-config.php y agregar la siguiente línea

define( 'WP_DEBUG', true );

Una vez que se finalice lo mejor es desactivar este modo simplemente colocando false

define( 'WP_DEBUG', false );

Laravel

En las versiones anteriores de Laravel basta editar el archivo .env y modificar o agregar según sea el caso la siguiente variable;

APP_DEBUG=true

En versiones mas nuevas se debe buscar el archivo config/app.php

'debug' =>;; env('APP_DEBUG', true),

Para desactivar basta colocarlos en false

Moodle

Se debe buscar el archivo config.php y colocar lo siguiente:

@error_reporting(E_ALL | E_STRICT); 
@ini_set('display_errors', '1'); 
$CFG->;;debug = (E_ALL | E_STRICT); 
$CFG->;;debugdisplay = 1;

Magento

Deshabilitar el Cache:

System >;; Cache Management >;; Select All [check-boxes] >;; Actions = Disable >;; Submit

Re-Indexar:

System >;; Index Management >;; Select All [check-boxes] >;; Actions = Reindex Data >;; Submit

Deshabilitar la compilación:

System >;; Tools >;; Compilation >;; Disable

Habilitar Error Reporting, abrir el archivo index.php y descomentar la siguiente línea:

#ini_set('display_errors', 1);

Luego abrir .htaccess agregar al final:

SetEnv MAGE_IS_DEVELOPER_MODE "true"

Habilitar los logs:

System >;; Configuration >;; Advanced >;; Developer >;; Log Settings >;; Enabled =>;; Yes

Por último renombrar errors/local.xml.sample cómo errors/local.xml

Prestashop

Para las versiones de prestashop desde la 1.5.3 en adelante se activa display_errors desde el archivo defines.inc.php dentro de la carpeta config ->;; config/defines.inc.php

Buscar donde diga

 ('_PS_MODE_DEV_', false);

y se coloca:

('_PS_MODE_DEV_', true);

Para versiones de Prestashop anteriores en el mismo archivo se busca

@ini_set('display_errors', 'off');

y se coloca:

@ini_set('display_errors', 'on');

Drupal

Buscar el archivo settings.php y agregar

$config['system.logging']['error_level'] = 'verbose';

Joomla

Buscar el archivo configuration.php en la raíz del sitio y modificar

public $debug = '0';
public $debug_lang = '0';

Otros

Mostramos los más utilizados sin embargo hay muchos más, si el tuyo no está en la lista anterior, independiente del Framework o CMS que se utilice cada uno implementa un modo debug, para buscarlo basta con hacerlo en la documentación oficial bajo temas como debug o depuración.

Detectar el error 500 con el log de errores de PHP

Habiendo hecho todo lo anterior es posible que aún no se muestren los errores, si bien en los pasos anteriores se habilitó para poder verlos es posible que algún plugin o incluso malware están configurados esos valores en off o que no se estén mostrando en pantalla y solo se están volcando a un archivo log.

Si el error 500 lo arroja en el index.php de página principal del dominio se puede buscar el archivo error_log dentro de public_html, este archivo contendrá los errores de ejecución.

Ya sea en este archivo o en pantalla nos podrá mostrar tres tipos de errores, los dos primeros son Warning, Notice y tercero el fatídico Fatal Error, si bien todos los errores son importantes los que provocan los errores 500 son los Fatal Error y sobre éstos es en los que nos enfocaremos hoy.

Causas y soluciones comunes para el error 500

Llegado a este punto ya conocemos el error y ese es el punto más importante, sabemos que ocurre ahora debemos encontrar el porqué ocurre ese error y poder solucionarlo de forma definitiva, aquí veremos las causas y soluciones más comunes al error 500.

Error de timeout

Una cosa importante a definir si el error lo presenta desde que carga la página o después de cierto tiempo.

Si el error ocurre luego de cierto tiempo de ejecución es muy posible que se deba un tema que se agota el tiempo de ejecución.

Fatal error: Maximum execution time exceeded

Si ya se logro ver los errores y dice algo referido al tiempo de ejecución o similar  conviene revisar el valor max_execution_time y max_input_time desde Editor de PHP de MultiPHP, el mismo lugar donde se activó display_errors

También es posible que el tiempo agotado sea del propio servidor web, en ese caso si aumentando los valores anteriores aún sigue arrojando un error de tiempo agotado lo mejor es que te comuniques con nuestro soporte para revisar este punto.

.htaccess mal configurado o corrupto

Una fuente importante de errores puede ser el archivo .htaccess del sitio, es posible que las reglas sean defectuosas, que entren en conflicto entre sí o que el archivo este incompleto.

Hay muchos cms, plugins y otros componentes que suelen modificar este archivo, causando así una corrupción en el mismo y ocasionando el error 500. Lo que puedes intentar es renombrar el .htaccess y verificar si la página carga.

Luego de renombrarlo como .htaccess.bak es aconsejable limpiar el cache del navegador, si no sabes como puedes verlo desde el artículo Cómo vaciar el caché de Chrome, Firefox, Safari y Microsoft Edge, o alternativamente puedes probar desde una pestaña de incógnito.

Obviamente al renombrar el .htaccess el funcionamiento del sitio se puede ver afectado, sin embargo si la página cambia y en lugar de un error 500 ya nos muestra al menos parcialmente la página, sabremos que el error está en el archivo .htaccess.

Falta de archivos web

Es probablemente el error más común, muchas veces los archivos se borran por error del usuario, a veces por una actualización fallida, por problemas de cuota de espacio o por infección de malware.

En otros casos puede que el archivo este sin embargo no se pueda leer por temas de permisos o que se encuentre en otra ruta por lo que primero lo mejor es verificar si el archivo está donde tiene que estar, si esta completo y que tenga los permisos adecuados.

En caso de comprobar que el archivo realmente está faltando la mejor solución es la restauración parcial o total de los mismos a partir de una copia de seguridad.

Ese es un de los motivos para hacer respaldos periódicos de los sitios ya sea manualmente desde cPanel o mediante nuestro nuevo sistema de Backup Premium para sitios web de forma completa y totalmente automática.

Errores de código

Estos errores no aparecen de un día para el otro sino se ha modificado nada, normalmente se dan luego de actualizar o modificar algún archivo ya sea por una actualización automática o por mano del programador, y se debe al típico punto y coma que falta, un paréntesis mal cerrado, un falta de ortografía en una palabra reservada, u otros errores por el estilo.

Un ejemplo sería similar a esto:

Parse error: syntax error, unexpected [..] in ...

En este caso la solución es revisar el código, encontrar el error y corregirlo.

Versión de PHP incorrecta

Existe otro caso en que nos puede dar un error de sintaxis, aunque revisando el código nos encontremos que es completamente válido y es sintácticamente correcto. Debería funcionar pero no lo hace,  eso es porque si bien el código es correcto, lo es solo para cierta versión de PHP, la cual quizás no tengamos instalada.

El lenguaje PHP ha cambiado a lo largo de los años agregando nueva sintaxis, funciones, librerías, así como descontinuando otras, por eso es muy importante tener configurada la versión correcta de PHP.

Si el código fuente de nuestro sitios es muy antiguo es posible que use funciones de PHP ya descontinuadas que produzcan errores 500 al usar una versión muy nueva de PHP.

En el caso inverso en que el código sea muy nuevo es muy posible que no funcione con versiones de PHP antiguas debido a que si es código moderno implementará sintaxis moderna que un PHP viejo no reconocerá.
Normalmente este problema se manifestará dando un mensaje de error de parseo, es decir que no reconoce el carácter o la palabra reservada que encontró.

Un caso práctico muy común es que luego de instalar Moodle o Laravel el sitio no funcione y es que ambos requieren versiones 7.X o superiores cuando algunos proveedores de web hosting por defecto usan la versión PHP 5.6.

Este problema se resuelve sencillo desde Administrador MultiPHP que permite (al momento) seleccionar desde PHP 5.4 hasta PHP 7.2 según los requerimientos que tengas, la versión correcta dependerá de tu sitio en particular.

Sino sabes exactamente cuál versión necesitas lo mejor buscar en la documentación oficial del software que tengas instalado o probar cada versión de PHP de una en una, puedes cambiar la versión tantas veces necesites.

Falta de Memoria

El software con el tiempo cada vez necesita más memoria RAM, por eso tras muchas actualizaciones del software, instalación de plugins o simplemente debido al aumento de los datos que maneje el sitio, puede empezar a mostrar problemas de memoria, por lo cual nos arrojará un error como este:

Fatal error: Out of memory (allocated 123456789) (tried to allocate 29360129 bytes) in /index.php on line 50

A veces el error puede ser aleatorio, no producirse siempre y aparecer solo cuando accedemos alguna parte del sistema en particular. Independientemente de cuantas veces ocurra o de que parte se trate, la solución es la misma, y se trata de aumentar la variable memory_limit desde Editor de PHP de MultiPHP.

Habilitar módulos

Existen requerimientos de software que hacen que un sitio necesite ciertas extensiones de PHP que no vengan cargadas por defecto.

En estos casos hay que configurarlas manualmente, y en el error de PHP aparecerá la función exacta que no está habilitada. El truco radica en saber a qué extensión pertenece la función del error, esto lo podemos saber a partir de la propia Documentación de PHP.

Luego de obtener el dato y una vez dentro de cPanel se debe ir hasta Seleccionar Versión PHP (o PHP Selector), si no aparece la lista de módulos se debe seleccionar la versión de PHP adecuada desde el combo y luego si se mostrará la lista, allí se seleccionan los módulos que se necesiten para finalmente presionar el botón Salvar en la parte de abajo.

Problemas de conectividad

En algunas ocasiones los errores 500 son ocasionados cuando el sitio intenta conectarse a otro sitio para enviar o recibir datos y por algún motivo la conexión falla o es interrumpida.

Sobre todo muchos plugins o extensiones mal programadas no controlan la posibilidad de que una conexión falle por eso cuando un servidor externo no se encuentre disponible puede provocar la caída completa del sitio con un error 500.

Lo que se deberá revisar es que el hosting este permita las conexiones salientes a través de su firewall de sistema, además que la librería CURL esté activada por defecto para que nuestro sitio pueda establecer conexiones y que Editor de PHP de MultiPHP esté habilitado allow_url_fopen.

Si lo anterior fallo la mejor opción es solicitar al servicio de hosting que deshabilite el firewall para hacer pruebas.

Error 500 en CMS y frameworks

Todo lo visto hasta aquí es bastante general y sirve para cualquier sitio, sin embargo, cada CMS o Framework tiene sus particularidades que pueden dar origen a errores.

Si utilizas WordPress puedes revisar los artículos Error 500 en WordPress como Error 500 en Woocommerce donde aparte de todo lo visto hasta aquí podrás ver cómo deshabilitar plugins de WordPress. Con el artículo Error 500 en Elementor además aprenderás como reparar la base de datos si se corrompe.

En el artículo Error 500 en Laravel además de lo visto aquí, podrás sumar cuales carpetas deben existir debido a que no se crean automáticamente, y que permisos son los adecuados para que Laravel pueda funcionar a la perfección.

Moodle es el software ideal para aulas virtuales, sin embargo también tiene varios requisitos mínimos de memoria o de espacio que habrá que chequear, así que te recomendamos ver la guía Error 500 en Moodle.

Si lo tuyo es el e-commerce y las tiendas online, de tratarse tu caso el de una tienda virtual hecha con Magento puedes revisar el paso a paso Error 500 en Magento. Por otro lado si usas una tienda basada en Prestashop puedes leer el post Error 500 en Prestashop.

Drupal también no es inmune a los errores 500, algo que dejamos bien documentado en la guía Error 500 en Drupal, y por último pero no por eso menos importante, para todos los fans de Joomla el error y su solución están cubiertos en este artículo: Error 500 en Joomla

Conclusión

Como podrás haber visto sin importar de qué tipo de sitios y más allá de las diferencias o particularidades de cada uno, muchas de las razones que ocasionan un error 500 son bastante similares entre un software y otro. El proceso a seguir en cada uno para resolver el problema es bastante similar, lo que quizás te lleve más tiempo es el debug en cada tipo de sistema o aplicación web.

Si el error luego de probar todo esto aún no alcanzas a dar con la solución correcta,  recuerda que desde el área de clientes de Infranetworking puedes abrir un ticket al área de soporte técnico las 24 horas del día, nuestros técnicos te ayudarán con gusto.

 


¿Buscas Hosting con Soporte Técnico 24 hs en tu Idioma?

➡ Mira nuestros paquetes de  Hospedaje Web y Planes de Hosting Multidominio

Seguridad, estabilidad, rapidez  y Soporte garantizado.


 

¿Te gustó el artículo? Compártelo:

Escrito por Álvaro De León

Desarrollador web / SysAdmin con amplia experiencia en optimización de aplicaciones, automatización, seguridad de sistemas, así como tweaking de rendimiento. Siempre disponible para ayudarte desde nuestro Chat online y el sistema de Tickets. Tiene estudios de Tecnólogo en Informática por la Facultad de Ingeniería de UDELAR – Centro Universitario de la Región Este. Conoce más sobre él desde su perfil de LinkedIn o visitando su web.

    Recibe en tu correo electrónico toda la información sobre hosting, desarrollo web y dominios

    Términos y Condiciones de Servicio

    Infranetworking Internacional - Copyright 2002-2022
    Todos los derechos reservados.