Diagnosticar y corregir un error 500 en un sitio alojado en cPanel

Procédure

Cómo depurar una página en blanco o un error 500

Cuando intentas visitar un sitio web y ves el mensaje de error "500 Internal Server Error", significa que algo ha ido mal con el sitio web. El error puede ser especialmente frustrante, ya que puede no darle ninguna información sobre la causa específica del error. Este artículo le muestra cómo depurar un error 500 en su sitio web.

¿Cuál es la diferencia entre una página en blanco y un error 500?

Una página en blanco no es necesariamente un error 500, y viceversa. Un error 500 significa que se ha producido un error durante el procesamiento de la solicitud HTTP. Puede tratarse de un error en la ejecución del script asociado, de un problema de acceso a un recurso, etc., que hace que el servidor web devuelva una respuesta con el código de error 500. Una página en blanco, por otro lado, significa que el servidor web no ha devuelto ningún cuerpo en su respuesta, o incluso ninguna respuesta.

En algunas situaciones, un error 500 significa que el servidor web no tiene ninguna respuesta que dar, y por lo tanto provoca una página en blanco. Este es posiblemente el caso cuando no se ha configurado ninguna página de error 500, o también si la salida de error ha sido desactivada y por lo tanto el sitio no tiene ningún mensaje de error que mencionar.

Algunos navegadores como Chrome e Internet Explorer muestran su propia página de error 500 cuando reciben el código de error del encabezado HTTP sin que el servidor proporcione ningún contenido en el cuerpo de la respuesta:

Diagnosticar y corregir un error 500 en un sitio alojado en cPanel

Los errores 500 suelen estar vinculados a un problema con uno de los archivos .htaccess que actúan sobre la URL, o a un error PHP. Por lo tanto, activando la visualización de errores con la opción php.ini display_errors, debería ver aparecer los errores PHP en lugar del error 500.

Diagnosticar y corregir un error 500 en un sitio alojado en cPanel

¿Cómo puedo saber si se trata de un error 500?

Para determinar si tiene un error 500, necesita mirar el código de error HTTP devuelto por el servidor web a su navegador web. Puede identificarlo utilizando la pestaña "Red" de la consola de desarrollador de su navegador:

Diagnosticar y corregir un error 500 en un sitio alojado en cPanel

¿Cómo identificar los problemas que causan el error 500?

Lo primero que hay que hacer es comprobar los archivos de registro asociados a la petición HTTP: el archivo de registro de Apache y el archivo de registro de PHP. Los últimos 300 eventos que le conciernen en el fichero de registro de Apache pueden consultarse desde el icono "Errores" de su interfaz cPanel, mientras que el fichero de registro PHP es generalmente el fichero "error_log" visible junto al fichero PHP en cuestión:

Diagnosticar y corregir un error 500 en un sitio alojado en cPanel

Sin embargo, es posible que los errores no se muestren en los registros. Esto puede ser el resultado de una configuración que impide que los errores PHP se muestren y/o registren. Más información.

Sin embargo, si utiliza WordPress, Prestashop o Joomla, es muy posible que los cambios no sean visibles. En este caso, deberáactivar la visualización de errores en sus respectivos archivos de configuración .

¿Cómo activar el modo de depuración de su sitio?

La mayoría de los CMS, como WordPress, tienen un sistema interno de gestión de errores, que evita que los parámetros PHP existentes procesen y tomen medidas en función del error encontrado. Al activar el modo de depuración, está pidiendo a este sistema interno de gestión de errores que muestre los errores y/o aumente la verbosidad de los archivos de registro.

Para activar el modo de depuración, puede conectarse directamente al"Administrador de archivos" accesible desde su interfaz cPanel y editar el archivo de configuración asociado para activar este modo.

¿Cómo activar el modo de depuración en WordPress?

Si su sitio fue creado con WordPress, puede activar el modo de depuración desde el archivo"wp-config.php" en la raíz de su alojamiento web. Para ello, basta con cambiar la constante"WP_DEBUG" a"true" en lugar de"false".

Si lo desea, también puede añadir la constante "WP_DEBUG_LOG " para registrar los errores en el archivo"wp-content/debug.log".

También debe comprobar que la constante"WP_DEBUG_DISPLAY" no está definida en su fichero de configuración. Si lo está, también deberá establecer este valor en true.

El fichero de configuración debería tener este aspecto:

Diagnosticar y corregir un error 500 en un sitio alojado en cPanel

¿Cómo activo el modo Debug en Prestashop?

En Prestashop, puede activar el modo de depuración yendo al archivo"define.inc.php" en la carpeta"config".

Tendrás que cambiar la declaración "_PS_MOD_DEV_" a"true" en lugar de"false". Si es necesario, también puedes activar el modo "_PS_DEBUG_PROFILING_", que te dará más información.

El archivo de configuración debería tener este aspecto:

Diagnosticar y corregir un error 500 en un sitio alojado en cPanel

¿Cómo activo el modo Debug en Joomla?

Para Joomla, puede activar el modo de depuración editando el archivo configuration.php. En este archivo, necesitas cambiar la variable"$debug" a 1 para activarlo. También necesitas cambiar la variable $error_reporting a"maximum" para que se muestren todos los errores.

El archivo de configuración debería tener este aspecto:

Diagnosticar y corregir un error 500 en un sitio alojado en cPanel

¿Cómo activo el modo depuración en otro CMS?

Es posible que esté utilizando otro CMS. Para saber cómo activar el modo de depuración , también puede escribir"Nombre del CMS + Depuración" en el motor de búsqueda. Esto debería llevarte directamente a un tutorial que explica cómo activar este modo.

Comprender los diferentes errores PHP

Es relativamente fácil entender el origen de un error 500, ya que muy a menudo son los mismos errores los que se repiten.

1. El primer error, y el más común, es el"Parse error". Suele indicar un problema de sintaxis (un error en la programación de su código). El error se define de la siguiente manera:

  • Parse Error: define que se trata de un error de código.
  • Se muestra un mensaje en inglés para proporcionar más información sobre el tipo de error
  • La ruta del fichero en el que se produce el error y la línea afectada por el error.

Si tomamos el ejemplo del archivo index.php de nuestro sitio Wordpress en el que falta un punto y coma al final de la línea 17, el archivo Web en el que se encuentra el error es el siguiente:

Diagnosticar y corregir un error 500 en un sitio alojado en cPanel

El error visible al ir a la URL será el siguiente:

Diagnosticar y corregir un error 500 en un sitio alojado en cPanel

2. El error"Parse error: syntax error, unexpected end of file" indica que parece que falta algo al final del archivo.

Diagnosticar y corregir un error 500 en un sitio alojado en cPanel

En este código, por ejemplo, falta la llave que cierra la sentencia if.

3. El " Parse Error: syntax error, unexpected (T_STRING), expecting ','or'; '" suele deberse a un error relacionado con las comillas en su código.

Diagnosticar y corregir un error 500 en un sitio alojado en cPanel

En este código, falta la barra invertida sobre la palabra"error", como en el código siguiente, para que funcione:

Diagnosticar y corregir un error 500 en un sitio alojado en cPanel

4. También puedes ver un "ErrorFatal". Este es uno de los errores más serios que puedes encontrar. También hace que su script se detenga. Se define de la siguiente manera:

  • Error Fatal: Este mensaje indica que el error es fatal y detendrá la ejecución de su script.
  • Mensaje: un mensaje sigue al código "Error fatal" para explicar la razón del error.
  • Ruta de acceso: se indica la ruta de acceso y la línea que causa el problema.

Este error suele indicar que no se ha definido una función, como en el código siguiente:

Diagnosticar y corregir un error 500 en un sitio alojado en cPanel

Por lo tanto, verá el siguiente error Fatal Error: Uncaught Error: Call to undefined function

Este error suele deberse a una de las siguientes causas:

  • Tiene un error tipográfico en la función que ha definido
  • El archivo PHP que contiene la función no ha sido cargado en su script
  • Si la función es parte de una extensión PHP, la extensión PHP puede no haber sido cargada.

5. Puede aparecer un error"Fatal Error: cannot redeclare" indicando que la función ha sido definida por segunda vez. El código podría tener este aspecto:

Diagnosticar y corregir un error 500 en un sitio alojado en cPanel

Es muy posible evitar este error:

  • cambiando el nombre de la función redefinida
  • También puede tratarse de un problema de espacio de nombres. En este caso, es necesario comprobar el espacio de nombres e indicar la ruta de acceso completa a la función.

6. Puede recibir el error"Fatal Error: allowed memory size exhausted".

Esto indica que el script PHP está utilizando demasiada RAM y excede el valor máximo autorizado en PHP.INI. Este es el valor "memory_limit". Puede cambiar este valor en las fórmulas de cPanel. Si, a pesar de aumentar el valor a un nivel suficientemente alto, el problema persiste, puede ser que una operación que consume mucha memoria se esté repitiendo con demasiada frecuencia (o incluso ad infinitum) en su script PHP. Los bucles infinitos también son posibles causas de este tipo de error.

7. El error"Fatal Error: Maximum execution time exceeded" significa que se ha excedido el tiempo de ejecución de su script. Puede modificar el valor"max_execution_time" en su configuración PHP.INI. Tenga en cuenta sin embargo que cualquier proceso que se ejecute durante más de 490 segundos no está permitido en nuestros paquetes de alojamiento compartido cPanel, pero sobre todo que si una página requiere un max_execution_time más alto, esto también significaría que se cargaría más lentamente, lo que generalmente no es deseable. Si la página que ha generado este error procesa muchos datos, le aconsejamos que realice un procesamiento por lotes. Por ejemplo, en lugar de procesar 1000 productos cada vez que se abre la página, sería más adecuado procesar lotes de 100 productos, utilizando peticiones AJAX, por ejemplo. Y obtendrá un TTFB (Time-To-First-Byte) más bajo.

8. El error"Fatal error: Uncaught Error: Call to undefined function mysql_connect()" significa que el módulo"mysql" no está cargado en la versión de PHP que está utilizando. El error se produce cuando:

  • Se utiliza la versión PHP 7 o superior pero su sitio no es compatible con esta versión
  • Está utilizando una versión PHP5 pero el módulo "MySQL" no está activado

Puedes cambiar fácilmente la versión de PHP yendo a"Seleccionar una versión de PHP" en tu interfaz de cPanel.

9. El error"Permiso denegado" significa que PHP no tiene los derechos para acceder a un archivo o carpeta definidos. Este error puede verse a menudo de la siguiente forma:

Warning file_put_contacts(/home/c123456/public_html/dossier/file.php): failed to open stream: Permission denied in /home/c123456/index.php on line 20

En este caso, tienes que comprobar los chmods de tus archivos y carpetas. En principio, los chmods son los siguientes

  • 644 : para un fichero
  • 755 : para una carpeta

10. El error"No such file or directory" indica que PHP necesita incluir un archivo que no parece estar presente en su espacio FTP. El error representa lo siguiente:

Warning: require_once(/home/c123456/public_html/dossier/fichier.php): failed to open stream: No such file or directory in /home/c123456/public_html/index.php on line 20

En este caso, debe :

  • Comprobar que el archivo en cuestión existe en su espacio FTP. Si no es así, deberá volver a cargar el archivo.
  • Compruebe que tiene los derechos correctos sobre el archivo, es decir, CHMOD. Las carpetas suelen tener chmod 755 y los archivos chmod 644.
  • Compruebe que la ruta indicada en su script PHP es la correcta.

11. Es posible que aparezca el error"Warning:session_start(): Cannot send session cookie headers already sent" que indica que ya se ha generado un flujo y que por lo tanto ya no es posible utilizar la función"session_start". Este error puede verse de la siguiente forma:

Advertencia: session_start(): Cannot send session cookie - headers already sent by (output started at /home/c123456/public_html/dossier/session.php:2 in /home/c123456/public_html/dossier/session.php on line 20

Las 3 posibles causas de este error son las siguientes

  • una directiva que muestra texto antes de llamar a la función
  • Un problema de juego de caracteres (en particular BOM_UTF8). Este error se produce siempre en la primera línea de su código
  • Caracteres que son invisibles en la pantalla pero que están presentes en sus archivos. Los editores de código como Visual Studio Code le permiten ver estos errores.

Conclusión

Ahora puede averiguar el motivo de un error 500 o de página en blanco. También puede solucionar los problemas de su sitio web.

No dudes en hacer cualquier pregunta o comentario que tengas.

Valora este artículo :

2,5/5 | 2 opinión

Este artículo le ha sido útil ?

Article utile

Article non utileNo

Vous souhaitez nous laisser un commentaire concernant cet article ?

Si cela concerne une erreur dans la documentation ou un manque d'informations, n'hésitez pas à nous en faire part depuis le formulaire.

Pour toute question non liée à cette documentation ou problème technique sur l'un de vos services, contactez le support commercial ou le support technique

MerciMerci ! N'hésitez pas à poser des questions sur nos documentations si vous souhaitez plus d'informations et nous aider à les améliorer.


Vous avez noté 0 étoile(s)

Artículos similares

3mn lectura

Wordpress en cPanel: Solucionar el problema de la página blanca o error 500

1mn lectura

Cómo ver los archivos de registro de Apache y PHP en cPanel

0mn lectura

¿Cómo corrijo un error 403 Forbidden en cPanel?

0mn lectura

¿Cómo corregir un error 404 en cPanel?


Formule una pregunta al equipo de LWS y a su comunidad