El temido error 500 internal server error. Parece que siempre llega en el momento más inoportuno y de repente uno se queda luchando por encontrar la manera de volver a poner su sitio de WordPress en línea.  Confíen en nosotros, todos hemos estado así. Otros errores que se comportan de manera similar que también podría haber visto incluyen el aterrador error al establecer una conexión de base de datos y la temida pantalla blanca de la muerte. Pero desde el momento en que su sitio falla, está perdiendo visitantes y clientes. Sin mencionar que simplemente es malo para su marca.

Hoy vamos a sumergirnos en el error 500 y le guiaremos a través de algunas maneras para que su sitio vuelva a estar en línea rápidamente. Lea más a continuación sobre las causas de este error y lo que puede hacer para evitarlo en el futuro.

¿Qué Es un Error 500 (internal server error)?

Cuando visita un sitio web, su navegador envía una solicitud al servidor host del sitio. El servidor toma esta solicitud, la procesa y devuelve los recursos solicitados (PHP, HTML, CSS, etc.) junto con un encabezado HTTP. El HTTP también incluye lo que ellos llaman un código de estado HTTP. Un código de estado es una forma de notificarle sobre el estado de la solicitud. Podría ser un código de estado 200 que significa “Todo está bien” o un código de estado 500 que significa que algo salió mal.

Hay muchos diferentes tipos decódigos de error de estado 500 (500, 501, 502, 503, 504, etc.) y todos significan algo diferente. En este caso, un “500 internal server error” indica que el servidor encontró una condición inesperada que le impidió cumplir con la solicitud (RFC 7231, sección 6.6.1).

500 internal server error en WordPress

500 internal server error en WordPress

Variaciones del Error 500

Debido a los diversos servidores web, sistemas operativos y navegadores, se puede presentar un error 500 de diferentes maneras. Pero todos comunican lo mismo. A continuación se indican solo algunas de las diferentes variaciones que puede ver en la web:

  • “500 Internal Server Error”
  • “HTTP 500”
  • “Internal Server Error”
  • “HTTP 500 – Internal Server Error”
  • “500 Error”
  • «HTTP Error 500»
  • “500 – Internal Server Error”
  • “500 Internal Server Error. Sorry something went wrong.”
  • “500. That’s an error. There was an error. Please try again later. That’s all we know.”
  • “The website cannot display the page – HTTP 500.”

Estos mensajes pueden estar acompañados del siguiente texto:

El servidor encontró un error interno o una configuración incorrecta y no pudo completar su solicitud. Póngase en contacto con el administrador del servidor, webmaster@domain.com e infórmeles sobre la hora en que se produjo el error, y todo lo que haya hecho que pudo haber causado el error. Más información sobre este error puede estar disponible en el registro de errores del servidor.

Error interno del servidor

Error interno del servidor

Otras veces, es posible que simplemente vea una pantalla blanca. Cuando se trata de 500 errores internos del servidor, esto es bastante común en los navegadores como Firefox y Safari.

500 error interno del servidor en Firefox

500 error interno del servidor en Firefox

Las marcas más grandes pueden incluso tener sus propios mensajes personalizados del error 500, como este de Airbnb.

Airbnb - error interno del servidor

Airbnb – error interno del servidor

Otro ejemplo creativo de la gente de readme:

readme 500 internal server error

readme 500 internal server error

Hasta el poderoso YouTube puede tener un error 500.

YouTube internal server error

YouTube internal server error

Si se trata de un servidor IIS 7.0 (Windows) o superior, tienen códigos de estado HTTP adicionales para indicar con mayor precisión la causa del error 500:

  • 500.0 – Module or ISAPI error occurred.
  • 500.11 – Application is shutting down on the web server.
  • 500.12 – Application is busy restarting on the web server.
  • 500.13 – Web server is too busy.
  • 500.15 – Direct requests for global.asax are not allowed.
  • 500.19 – Configuration data is invalid.
  • 500.21 – Module not recognized.
  • 500.22 – An ASP.NET httpModules configuration does not apply in Managed Pipeline mode.
  • 500.23 – An ASP.NET httpHandlers configuration does not apply in Managed Pipeline mode.
  • 500.24 – An ASP.NET impersonation configuration does not apply in Managed Pipeline mode.
  • 500.50 – A rewrite error occurred during RQ_BEGIN_REQUEST notification handling. A configuration or inbound rule execution error occurred.
  • 500.51 – A rewrite error occurred during GL_PRE_BEGIN_REQUEST notification handling. A global configuration or global rule execution error occurred.
  • 500.52 – A rewrite error occurred during RQ_SEND_RESPONSE notification handling. An outbound rule execution occurred.
  • 500.53 – A rewrite error occurred during RQ_RELEASE_REQUEST_STATE notification handling. An outbound rule execution error occurred. The rule is configured to be executed before the output user cache gets updated.
    500.100 – Internal ASP error.

El Impacto de Error 500 sobre SEO

A diferencia de los errores 503 que son utilizados para el modo de mantenimiento de WordPress y para decir a Google volver a revisar el sitio un poco más tarde, un error 500 puede tener un impacto negativo sobre su SEO si no se los arreglan de inmediato. Si su sitio es inactivo digamos que por 10 minutos y el sitio es arrastrado constantemente muchas veces, el arrastrador recibirá la página de la cache. O Google puede ser que no tenga la posibilidad de re-arrastrar antes de ser restaurado. En este scenario usted está bien.

Sin embargo si el sitio es inactivo por un período más extenso digamos que durante 6 horas, Google puede ver el error 500 como un problema a nivel del sitio que debe ser abordado. Esto sí puede impactar sus rankings. Si está preocupado por errores 500 repetitivos deberá investigar la causa. Algunas de las soluciones a continuación pueden ayudar.

¿Cómo Arreglar un Error 500?

¿Dónde debería comenzar la solución de problemas cuando vea un error 500 en su sitio de WordPress? A veces es posible que ni siquiera sepa por dónde empezar. Normalmente los errores 500 tienen que ver con el servidor, pero según nuestra experiencia, estos errores se originan de dos cosas, la primera es un error del usuario (problema del lado del cliente) y la segunda es que hay un problema con el servidor. Así que nos sumergiremos un poco en ambos.

Consulte estas causas comunes y las formas de solucionar el 500 internal server error y vuelva a funcionar en muy poco tiempo.

1. Trate de Volver a Cargar la Página

Esto puede parecer un poco obvio para algunos, pero una de las primeras cosas que debe intentar cuando se encuentra con el error 500 es simplemente esperar un minuto y volver a cargar la página (F5 o Ctrl + F5). Podría ser que el servidor esté simplemente sobrecargado y el sitio vuelva enseguida. Mientras espera, también puede probar rápidamente un navegador diferente para descartarlo como un problema.

Otra cosa que puede hacer es copiar y pegar el sitio web en  downforeveryoneorjustme.com. Este sitio le dirá si el sitio está caído o si es un problema de su parte. Una herramienta como esta comprueba el código de estado HTTP que se devuelve desde el servidor. Si es algo distinto a 200 “Todo está bien”, devolverá una indicación de inactividad.

downforeveryoneorjustme

downforeveryoneorjustme

También hemos notado que a veces esto puede ocurrir inmediatamente después de actualizar un plugin o tema en su sitio de WordPress. Por lo general, esto es en hosts que no están configurados correctamente. Lo que sucede es que experimentan un tiempo de espera temporal inmediatamente después. Sin embargo, las cosas generalmente se resuelven por sí solas en un par de segundos y por lo tanto, volver a cargarlo es todo lo que necesita hacer.

2. Borrar La Cache del Navegador

Borrar la cache de su navegador es otro buen paso para solucionar problemas antes de sumergirse en una depuración más profunda de su sitio. A continuación hay instrucciones sobre cómo hacerlo en los diferentes navegadores:

3. Verifique los Registros de Su Servidor

Debe tomar ventaja de los “error logs”. Si es un cliente de Kinsta, puede ver fácilmente los errores del registro en el visor del dashboard de MyKinsta. Esto puede ayudarle a reducir el problema al instante, en especial si es por un plugin de su sitio.

Revise por error logs para el 500 internal server errors

Revise por error logs para el 500 internal server errors

Si su host no tiene una herramienta de registro, también puede agregar el siguiente código a su archivo wp-config.php para habilitar el registro:

define( 'WP_DEBUG', true );
define( 'WP_DEBUG_LOG', true );
define( 'WP_DEBUG_DISPLAY', false );

Los registros normalmente se encuentran en el directorio/wp-content. Algunos hosts como aquí en Kinsta, pueden tener una carpeta dedicada llamada «logs».

Carpeta WordPress de error logs (SFTP)

Carpeta WordPress de error logs (SFTP)

También puede verificar los archivos de registro en Apache y Nginx, que comúnmente se encuentran aquí:

  • Apache: /var/log/apache2/error.log
  • Nginx: /var/log/nginx/error.log

Si es un cliente de Kinsta, también puede aprovechar nuestra herramienta de análisis para obtener un desglose de la cantidad total de errores 500 y ver con qué frecuencia y cuándo se producen. Esto puede ayudarlo a solucionar problemas si este es continuo, o tal vez algo que se ha resuelto solo.

Respuesta del análisis de error 500

Respuesta del análisis de error 500

Si se muestra el error 500 debido a un error fatal de PHP, también puede intentar habilitar el informe de errores de PHP. Simplemente agregue el siguiente código al archivo arrojando el error. Normalmente, puede restringir el archivo en la pestaña de la consola de Google Chrome DevTools.

ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);

Y es posible que deba modificar también su archivo php.ini con la siguiente:

display_errors = on

4. Error al Establecer una Conexión de Base de Datos

Los errores 500 también pueden ocurrir a partir de un error de conexión a la base de datos. Dependiendo de su navegador, es posible que vea diferentes errores. Pero ambos generarán un código de estado HTTP 500 independientemente de los registros de su servidor.

A continuación se muestra un ejemplo de lo que parece un mensaje de “error al establecer una conexión de base de datos” a su navegador. Toda la página está en blanco porque no se pueden recuperar datos para representar la página, ya que la conexión no funciona correctamente. Esto no solo rompe el front-end de su sitio, sino que también le impedirá acceder a su dashboard de WordPress.

Ejemplo de error al establecer una conexión de base de datos

Ejemplo de error al establecer una conexión de base de datos

Entonces, ¿por qué sucede esto exactamente? Bueno, a continuación hay algunas razones comunes.

  • El problema más común es que las credenciales de inicio de sesión en su base de datos son incorrectas. Su sitio de WordPress usa información de inicio de sesión separada para conectarse a su base de datos MySQL.
  • Su base de datos está corrompida. Con tantas partes móviles con temas, plugins y usuarios que constantemente las eliminan e instalan, a veces las bases de datos se corrompen. Esto puede ser debido a una tabla faltante o corrompida individualmente, o quizás parte de la información fue eliminada por accidente.
  • Puede tener archivos corruptos en su instalación de WordPress. Esto a veces puede suceder debido a los piratas informáticos.
  • Problemas con su servidor de base de datos. Varias cosas podrían estar mal en el extremo de los servidores web, como la sobrecarga de la base de datos o la falta de respuesta de demasiadas conexiones concurrentes. Esto es bastante común con los hosts compartidos, ya que utilizan los mismos recursos para muchos usuarios en los mismos servidores.

Consulte nuestra publicación en profundidad sobre cómo solucionar el error al establecer una conexión de base de datos en WordPress.

5. Revise sus Plugins y Temas

Los plugins y temas de terceros pueden causar fácilmente errores 500. Hemos visto de todo tipo causarlo aquí en Kinsta, desde los plugins de control deslizante hasta los plugins de anuncios rotativos. Muchas veces debería ver el error inmediatamente después de instalar algo nuevo o ejecutar una actualización. Esta es una de las razones por las que siempre recomendamos utilizar un entorno de staging para las actualizaciones o, al menos, ejecutar las actualizaciones una por una. De lo contrario, si encuentra un error 500, puede descubrir rápidamente qué lo causó.

Algunas maneras en que puede solucionar este problema es desactivando todos sus plugins. Recuerde, no perderá ningún dato si simplemente desactiva un plugin. Si aún puede acceder a su administrador, una forma rápida de hacerlo es ir a “plugins” y seleccionar “Desactivar” en el menú de acciones masivas. Esto deshabilitará todos sus plugins.

Desactivar todos los plugins

Desactivar todos los plugins

Si esto soluciona el problema, deberá encontrar al culpable. Comience a activarlos uno por uno, recargando el sitio después de cada activación. Cuando vea el error 500, encontrará el plugin incorrecto. Luego puede comunicarse con el desarrollador del plugin para obtener ayuda o publicar un ticket de soporte en el repositorio de WordPress.

Si no puede acceder a su administrador, puede usar FTP en su servidor y cambiar el nombre de su carpeta de plugins a algo como plugins_old. Luego revise su sitio de nuevo. Si funciona, entonces tendrá que probar cada plugin uno por uno. Cambie el nombre de su carpeta de plugins a “plugins” y luego cambie el nombre de cada carpeta de plugin dentro de ella, uno por uno, hasta que la encuentre. También podría intentar replicar esto en un entorno de staging primero.

Renombre la carpeta de plugin

Renombre la carpeta de plugin

Siempre asegúrese de que sus plugins, temas y el núcleo de WordPress estén actualizados. Y verifique para asegurarse de que está ejecutando una versión compatible de PHP. Si resulta ser un conflicto con el código incorrecto en un plugin, es posible que deba traer a un desarrollador de WordPress para solucionar el problema.

6. Reinstalar el Núcleo de WordPress

A veces, los archivos centrales de WordPress pueden corromperse, especialmente en sitios más antiguos. En realidad, es bastante fácil volver a cargar solo el núcleo de WordPress sin afectar sus plugins o temas. Tenemos una guía detallada con 5 formas diferentes de reinstalar WordPress. Y, por supuesto, asegúrese de hacer un backup antes de continuar. Pase a una de las secciones a continuación:

7. Error de Permisos

Un error de permisos con un archivo o carpeta en su servidor también puede causar un error 500. Aquí hay algunas recomendaciones típicas de permisos cuando se trata de permisos de archivos y carpetas en WordPress:

  • Todos los archivos deben ser 644 (-rw-r-r-) o 640.
  • Todos los directorios deben ser 755 (drwxr-xr-x) o 750.
  • No se debe poner nunca 777 a los directorios, incluso subir directorios.
  • Endurecimiento: wp-config.php también podría establecerse en 440 o 400 para evitar que otros usuarios en el servidor lo lean.

Consulte el artículo de WordPress Codex sobre cómo cambiar los permisos de archivo para una explicación más detallada.

Puede ver fácilmente sus permisos de archivo con un cliente FTP (como se ve a continuación). También puede comunicarse con su equipo de soporte y pedirles rápidamente permisos de archivos GREP en sus carpetas y archivos para asegurarse de que estén configurados correctamente.

Permisos de carpetas SFTP

Permisos de carpetas SFTP

8. Límite de Memoria de PHP

Un error 500 también podría ser causado al agotar el límite de memoria de PHP en su servidor. Podría intentar aumentar el límite. Siga las instrucciones a continuación sobre cómo cambiar este límite en cPanel, Apache, su archivo php.ini y archivo wp-config.php

Aumentar el Límite de Memoria PHP en cPanel

Si está ejecutando en un host que usa cPanel, puede cambiarlo fácilmente desde la interfaz de usuario. En Software, haga clic en «Seleccionar versión de PHP».

Seleccionar version PHP

Seleccionar version PHP

Haga clic en «Cambiar a Opciones de PHP».

Cambiar a opciones PHP

Cambiar a opciones PHP

Puede dar clic en el atributo memory_limit y cambiar su valor. Luego haga clic en “guardar”.

Aumentar el límite de memoria PHP en cPanel

Aumentar el límite de memoria PHP en cPanel

Aumentar el Límite de Memoria de PHP en Apache

El archivo .htaccess es un archivo oculto especial que contiene varias configuraciones que puede usar para modificar el comportamiento del servidor, hasta un nivel específico del directorio. Primero inicie sesión en su sitio a través de FTP o SSH, eche un vistazo a su directorio raíz y vea si hay un archivo .htaccess allí.

Archivo .htaccess

Archivo .htaccess

Si existe, puede editar ese archivo para agregar el código necesario para aumentar el límite de memoria de PHP. Lo más probable es que esté configurado en 64M o menos, puede intentar aumentar este valor.

php_value memory_limit 128M

Aumentar el Límite de Memoria de PHP en el archivo php.ini

¿Luchando con el tiempo de inactividad y los problemas de WordPress? Kinsta es la solución de alojamiento diseñada para ahorrarle tiempo! Vea nuestras características

Si lo anterior no funciona, puede intentar editar su archivo php.ini. Inicie sesión en su sitio a través de FTP o SSH, vaya al directorio raíz de su sitio y abra o cree un archivo php.ini.

Archivo php.ini

Archivo php.ini

Si el archivo ya estaba allí, busque las tres configuraciones y modifíquelas si es necesario. Si acaba de crear el archivo, o las configuraciones no están en ninguna parte, puede pegar el código a continuación. Por supuesto, puede modificar los valores para satisfacer sus necesidades.

memory_limit = 128M

Algunos hosts compartidos también pueden requerir que agregue la directiva suPHP en su archivo .htaccess para que funcione la configuración del archivo php.ini anterior. Para hacer esto, edite su archivo .htaccess, también ubicado en la raíz de su sitio, y agregue el siguiente código hacia la parte superior del archivo:

<IfModule mod_suphp.c> 
suPHP_ConfigPath /home/yourusername/public_html
</IfModule>

Si lo anterior no funcionó para usted, es posible que su host haya bloqueado la configuración global y en su lugar, la haya configurado para utilizar archivos .user.ini. Para editar su archivo .user.ini, inicie sesión en su sitio a través de FTP o SSH, vaya al directorio raíz de su sitio y abra o cree un archivo .user.ini. A continuación, puede pegar el siguiente código:

memory_limit = 128M

Aumentar el Límite de Memoria PHP en wp-config.php

No somos fanáticos de la última opción, pero si todo lo demás falla, puede intentarlo. Primero, inicie sesión en su sitio a través de FTP o SSH, y ubique su archivo wp-config.php, que normalmente está en la raíz de su sitio.

Archivo wp-config.php

Archivo wp-config.php

Agregue el siguiente código a su archivo wp-config.php:

define('WP_MEMORY_LIMIT', '128M');

También puede preguntarle a su host si tiene problemas de límite de memoria. En Kinsta, utilizamos New Relic y otros métodos de solución de problemas para ayudar a los clientes a limitar qué plugin, query o script pueden estar agotando el límite. También puede usar su propia clave New Relic personalizada.

Depuración con New Relic

Depuración con New Relic

9. Problema con Su Archivo .htaccess

Kinsta solo usa Nginx, pero si está utilizando un host de WordPress que ejecuta Apache, podría ser que su archivo .htaccess tenga un problema o se haya dañado. Siga los pasos a continuación para recrear uno nuevo desde cero.

Primero, inicie sesión en su sitio a través de FTP o SSH, y cambie el nombre de su archivo .htaccess a .htaccess_old.

Renombre el archivo .htaccess

Renombre el archivo .htaccess

Normalmente, para recrear este archivo, simplemente puede volver a guardar sus permalinks en WordPress. Sin embargo, si está en medio de un error 500, lo más probable es que no pueda acceder a su WordPress admin, por lo que esta no es una opción. Por lo tanto, puede crear un nuevo archivo .htaccess e ingresar los siguientes contenidos. Luego cárguelo a su servidor.

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress

Consulte el WordPress Codex para obtener más ejemplos, así como un archivo .htaccess predeterminado para múltiples sitios.

10. Errores de Codificación o Sintaxis en Su CGI/Perl Script

Los errores 500 causados por errores CGI y Perl son mucho menos comunes de lo que solían ser. Aunque todavía vale la pena mencionarlo, especialmente para aquellos que usan cPanel donde todavía se usan muchos scripts CGI con un solo clic. Como AEM en Stack Overflow dice:

CGI ha sido reemplazado por una amplia variedad de tecnologías de programación web, incluyendo PHP, varias extensiones de Apache como mod_perl, Java de varios tipos y frameworks, incluyendo Java EE, Struts, Spring, etc., frameworks basados en Python como Django, Ruby on Rails y muchos otros frameworks de Ruby, y varias tecnologías de Microsoft.

Aquí hay algunos consejos cuando se trabaja con scripts CGI:

  • Al editar, siempre use un editor de texto plano, como Atom, Sublime o Notepad ++. Esto asegura que permanezcan en formato ASCII.
  • Asegúrese de que se usen los permisos correctos de chmod 755 en los scripts y directorios CGI.
  • Suba sus scripts CGI en modo ASCII (que puede seleccionar en su editor de FTP) en el directorio cgi-bin de su servidor.
  • Confirme que los módulos de Perl que necesita para su script estén instalados y sean compatibles.

11. Problema del Servidor (Consulte con Su Host)

Finalmente, debido a que los errores 500 también pueden ocurrir por el tiempo de espera de PHP o errores fatales de PHP con plugins de terceros, siempre puede comprobarlo con su WordPress host. A veces, estos errores pueden ser difíciles de solucionar sin un experto. Estos son solo algunos ejemplos comunes de algunos errores que activan códigos de estado 500 de HTTP en el servidor que le pueden confundir. ?

PHP message: PHP Fatal error: Uncaught Error: Call to undefined function mysql_error()...
PHP message: PHP Fatal error: Uncaught Error: Cannot use object of type WP_Error as array in /www/folder/web/shared/content/plugins/plugin/functions.php:525

Controlamos todos los sitios del cliente aquí en Kinsta y se notifica automáticamente cuando ocurren este tipo de errores. Esto nos permite ser proactivos y comenzar a solucionar el problema de inmediato. También utilizamos hosts LXD administrados y contenedores de software LXC orquestados para cada sitio. Esto significa que cada sitio de WordPress se encuentra en su propio contenedor aislado, que tiene todos los recursos de software necesarios para ejecutarlo (Linux, Nginx, PHP, MySQL). Los recursos son 100% privados y no se comparten con nadie más ni siquiera con sus propios sitios.

Los tiempos de espera de PHP también pueden ocurrir por la falta de PHP workers, aunque generalmente estos causan errores 504, no errores 500. Estos determinan cuántas solicitudes simultáneas puede manejar su sitio en un momento determinado. Para decirlo de manera simple, cada solicitud no cacheada para su sitio es manejada por un PHP Worker.

Cuando los PHP Workers ya están ocupados en un sitio, comienzan a construir una cola. Una vez que haya alcanzado el límite de PHP Workers, la cola comenzará a expulsar las solicitudes anteriores, lo que podría generar errores 500 o solicitudes incompletas. Lea nuestro artículo en profundidad sobre los PHP Workers.

Supervise su sitio

Si está preocupado porque este tipo de errores pueden suceder en su sitio en el futuro, también puede utilizar una herramienta como updown.io para supervisar y notificarle de inmediato si se producen. Envíe periódicamente una solicitud HTTP HEAD a la URL que elija. Puede usar su página de inicio. La herramienta le permite establecer frecuencias de verificación de:

  • 15 segundos
  • 30 segundos
  • 1 minuto
  • 2 minutos
  • 5 minutos
  • 10 minutos

Le enviará un correo siempre y cuando su sitio no funcione. A continuación hay un ejemplo.

Notificación por correo de error 500

Notificación por correo de error 500

Esto puede ser especialmente útil si está intentando depurar un plugin defectuoso o si está en un host compartido, que tiende a saturar sus servidores. Esto puede proporcionarle pruebas de la frecuencia con la que su sitio podría estar cayendo (incluso durante la noche). Es por eso que siempre recomendamos ir con un host administrado de WordPress. Asegúrese de revisar nuestra publicación que explora los 9 motivos principales para elegir un hosting administrado de WordPress.

Resumen

Los errores 500 siempre son frustrantes, pero ojalá ahora conozca algunas formas adicionales de solucionarlos para que su sitio vuelva a funcionar rápidamente. Recuerde, generalmente estos tipos de errores son causados por plugins de terceros, errores fatales de PHP, problemas de conexión a la base de datos, problemas con su archivo .htaccess o límites de memoria de PHP y en ocasiones, tiempos de espera de PHP.

¿Hubo algo que se nos pasó? Tal vez tenga otro consejo sobre la solución de errores 500. Si es así, háganos saber en los comentarios.