Guía para Diagnosticar y Solucionar un Error 500 (Internal Server Error)

29.11.2021

Guía para Diagnosticar y Solucionar un Error 500 (Internal Server Error)

El Error 500 (Internal Server Error) en un hosting con cPanel suele estar relacionado con problemas en la configuración del sitio, como permisos incorrectos, errores en .htaccess, fallos en PHP o falta de recursos del servidor. En esta guía te explico cómo habilitar la visualización de errores, revisar registros en cPanel y corregir posibles fallos.


1. Activar la Visualización de Errores en cPanel

Por defecto, PHP puede ocultar los errores para evitar exponer información sensible. Para ver los errores directamente en el navegador, debes activarlos desde cPanel.

1.1 Activar errores en la configuración de PHP

  1. Inicia sesión en cPanel.

  2. Ve a la sección "Software" y haz clic en "Seleccionar versión de PHP" o "MultiPHP INI Editor".

  3. Selecciona la versión de PHP activa en tu sitio.

  4. Busca las siguientes opciones y ajústalas:

    display_errors = On error_reporting = E_ALL log_errors = On 
  5. Guarda los cambios y recarga la página donde aparece el error.

1.2 Forzar la visualización de errores con .htaccess

Si no tienes acceso a php.ini, puedes activar los errores editando el archivo .htaccess desde cPanel:

  1. Accede a cPanel.

  2. En la sección "Archivos", entra en "Administrador de archivos".

  3. Dirígete a la carpeta public_html (o la carpeta donde está tu sitio).

  4. Busca el archivo .htaccess. Si no lo ves, haz clic en "Configuración" (arriba a la derecha) y activa la opción "Mostrar archivos ocultos (dotfiles)".

  5. Edita el archivo .htaccess y agrega lo siguiente al final:

    php_flag display_errors on php_value error_reporting 32767 
  6. Guarda los cambios y recarga tu sitio.

Nota: Algunos servidores bloquean la modificación de php_flag. Si tu hosting no permite esto, usa el método php.ini o agrégalo en tu código PHP.

1.3 Activar errores dentro del código PHP

Si los errores siguen sin mostrarse, puedes agregarlos directamente en el archivo PHP:

<?php ini_set('display_errors', 1); ini_set('display_startup_errors', 1); error_reporting(E_ALL); ?> 

Coloca este código en el archivo donde sospeches que está el error y recarga la página.


2. Revisar el Registro de Errores en cPanel (error_log)

Si los errores no aparecen en pantalla, consulta el registro de errores del servidor.

  1. Inicia sesión en cPanel.
  2. Ve a "Métricas" > "Errores".
  3. Aquí verás los errores recientes de tu sitio web.

Alternativamente, puedes buscar manualmente el archivo error_log en el Administrador de archivos:

  1. Accede a "Administrador de archivos" en cPanel.
  2. Busca un archivo llamado error_log en:
    • public_html/
    • La carpeta del dominio (public_html/misitioweb.com/)
  3. Abre el archivo y revisa los errores registrados.

Ejemplo de error en error_log

[Sat Oct 21 14:25:33 2023] [error] [client 123.456.789.000] PHP Fatal error: Uncaught Error: Call to undefined function mysql_connect() in /home/user/public_html/index.php:10 

Posible solución: mysql_connect() fue eliminado en PHP 7+. Debes actualizar tu código para usar mysqli_connect() o PDO.


3. Verificar y Corregir el Archivo .htaccess

Un .htaccess mal configurado puede generar un Error 500. Para solucionarlo:

  1. Ve al "Administrador de archivos" en cPanel.
  2. Dirígete a public_html y encuentra el archivo .htaccess.
  3. Renómbralo a .htaccess_backup para desactivarlo temporalmente.
  4. Recarga tu sitio web.
    • Si el error desaparece, el problema está en .htaccess.
    • Si el error persiste, el problema es otro.

Si .htaccess era la causa, revísalo y corrige cualquier línea sospechosa. Por ejemplo:

Ejemplo de configuración incorrecta

php_value memory_limit 256M 

Algunos servidores bloquean este tipo de configuraciones en .htaccess. Debes moverlas a php.ini.


4. Verificar Permisos de Archivos y Carpetas

Si los permisos de archivos y carpetas no son correctos, puedes obtener un Error 500.

  1. Ve al "Administrador de archivos" en cPanel.
  2. Dirígete a public_html.
  3. Verifica los permisos:
    • Archivos PHP: 644
    • Carpetas: 755
    • Archivos confidenciales (config.php, .env): 600 o 640
  4. Para cambiar permisos, haz clic derecho sobre el archivo o carpeta y selecciona "Cambiar permisos".

5. Aumentar el Límite de Memoria PHP

Si tu aplicación necesita más memoria de la asignada por el servidor, puedes aumentarla.

  1. Ve a cPanel > "Seleccionar versión de PHP" o "MultiPHP INI Editor".
  2. Busca memory_limit y aumenta el valor (por ejemplo, 512M).
  3. Guarda los cambios y recarga el sitio.

También puedes agregar esta línea en php.ini o en tu código PHP:

ini_set('memory_limit', '512M'); 

6. Revisar la Versión de PHP

Si el error ocurre después de una actualización, verifica que tu código sea compatible con la versión de PHP.

  1. Ve a cPanel > "Seleccionar versión de PHP".
  2. Cambia la versión de PHP (por ejemplo, de 8.2 a 7.4 si tienes código antiguo).
  3. Guarda los cambios y prueba nuevamente.

7. Habilitar Debugging en WordPress, Joomla o Drupal

Si usas un CMS como WordPress, Joomla o Drupal, puedes habilitar el modo de depuración.

7.1 WordPress

  1. Edita el archivo wp-config.php.
  2. Agrega o cambia estas líneas:
    define('WP_DEBUG', true); define('WP_DEBUG_LOG', true); define('WP_DEBUG_DISPLAY', false); @ini_set('display_errors', 0); 
  3. Guarda los cambios y revisa el archivo wp-content/debug.log.

7.2 Joomla

  1. Edita configuration.php y cambia:
    public $error_reporting = 'maximum'; public $debug = '1'; 
  2. Guarda los cambios.

7.3 Drupal

  1. Edita sites/default/settings.php y agrega:
    $config['system.logging']['error_level'] = 'verbose'; 
  2. Guarda y prueba tu sitio.

8. Probar con un Archivo PHP de Prueba

Si el problema persiste, verifica si PHP está funcionando correctamente.

  1. Entra a cPanel > Administrador de archivos.
  2. Crea un archivo llamado test.php en public_html.
  3. Agrega este código:
    <?php echo "PHP está funcionando correctamente."; ?> 
  4. Abre tudominio.com/test.php en tu navegador.
    • Si ves el mensaje, PHP está bien y el problema es tu código.
    • Si sigue dando Error 500, el problema es del servidor.

Conclusión

Para resolver un Error 500 en cPanel, sigue estos pasos:

  1. Activa la visualización de errores en cPanel.
  2. Revisa el error_log en cPanel.
  3. Corrige errores en .htaccess.
  4. Verifica permisos de archivos y carpetas.
  5. Aumenta el límite de memoria PHP.
  6. Revisa la versión de PHP.
  7. Habilita el modo de depuración en WordPress, Joomla o Drupal.
  8. Prueba con un archivo test.php simple.

Con estos métodos, deberías poder identificar y corregir el error en tu hosting cPanel

¡Hablemos!