¿Cómo analizar y solucionar el error 500: Error interno del servidor? (500 Internal Server Error)

Actualizado el 28 de Julio, 2016. Por BlueHosting.

Un error interno del servidor o Error 500 puede tener muchas causas, incluyendo -pero no limitado- a: permisos inválidos, propiedad inválida, líneas erróneas en sus archivos php.ini o .htaccess, solicitudes inválidas en un script, y otras causas no mencionados aquí. Generalmente, esto no es un problema del servidor propiamente y a menudo puede ser resuelto haciendo algún cambio de configuración. Por favor verifique el registro o Log de "Errores" en cPanel para más información.

Ejemplo de un error 500 en el servidor

Un error 500 lucirá en general como lo siguiente:

Internal Server Error

The server encountered an internal error or misconfiguration and was unable to complete your request.

Please contact the server administrator, webmaster@ejemplo.com and inform them of the time the error occurred, and anything you might have done that may have caused the error.

More information about this error may be available in the server error log.

Additionally, a 500 Internal Server Error error was encountered while trying to use an DocumentoErróneo to handle the request.

El mensaje arriba describe que el servidor encontró un error interno o configuración errónea y no fue capaz de completar la solicitud. También indica que el usuario puede encontrar más información en el registro de errores del servidor; finalmente se observa que el servidor encontró un error en el "DocumentoErróneo" para poder gestionar la solicitud del usuario. Lo mostrado anteriormente es solo un ejemplo y existen distintas formas en las cuales se puede presentar un error 500.

Permisos inválidos, "modificable por grupo"

Un error de permisos inválidos se verá como el siguiente:

[Tue Jul 26 00:03:22 2016] [error] [client 120.249.xxx.yyy] SoftException in Application.cpp:601: Directory "/home/ejemplodeusuario/public_html" is writeable by group

Este error indica que el directorio puede ser modificado por un grupo. En este ejemplo, la carpeta tenía los permisos de directorio demasiado elevados. Para corregir esto, los permisos deben ser cambiados de "777" a "755".

En general, los permisos para directorios y carpetas deben ser 755. Los scripts ejecutables dentro de la carpeta cgi-bin deben tener permisos 755. Las imágenes, multimedia y archivos de texto como HTML deben tener permisos 644.

  • Archivos - 644
  • Scripts CGI - 755
  • Directorios - 755

Puede modificar los permisos con el "Administrador de Archivos" de cPanel, un cliente FTP, o usando el comando chmod si está utilizando SSH/Bash.

.htaccess errado; código, comando o sintaxis inválidos.

Otro error común, es que usted haya añadido líneas erróneas o que creen conflictos en el archivo .htaccess ("punto htaccess"). La mejor manera de solucionar este problema es comentando las líneas en .htaccess.

Para comentar una línea en .htaccess simplemente agregue el símbolo # al inicio de la línea. Es muy prudente guardar una copia de respaldo de cualquier archivo original antes de realizar algún cambio.

Por ejemplo, si el archivo .htaccess tiene la siguiente forma:

DirectoryIndex default.html
AddType application/x-httpd-php5 php

Entonces haga la prueba comentado la segunda línea:

DirectoryIndex default.html
#AddType application/x-httpd-php5 php

Las líneas discontinuas y las líneas que comienzan con php_flag suelen ser los errores más comunes. Si no puede determinar cuál es el problema, entonces agregue el signo # en todas las líneas para comentarlas.

Otros errores comunes en .htaccess:

FollowSymlinks:

Un error podría ser similar al siguiente:

[Tue Jul 26 01:03:22 2016] [alert] [client 120.249.xxx.yyy] /home1/examplec/public_html/.htaccess: Option FollowSymlinks not allowed here

El error de este ejemplo es muy fácil de resolver; en el archivo especificado, use una directiva permitida. En este caso use "SymlinksIfOwnerMatches" en lugar de "FollowSymlinks" o elimine la línea completamente.

Sintaxis no cerrada

Otro error común se puede asemejar al siguiente:

[Tue Jul 26 01:10:22 2016] [alert] [client 120.249.xxx.yyy] /home1/examplec/public_html/.htaccess: /home1/examplec/public_html/.htaccess:3: <IfModule>ExampleRule/Module> was not closed.

Una vez más, la solución es tan simple como arreglar el problema de sintaxis o removerla. En este caso, cierre el final de la directiva </IfModule> adecuadamente y ponga las reglas dentro del módulo If correctamente para resolver el problema.

Estos son solo algunos ejemplos muy comunes que pueden ser causados por parámetros erróneos en .htaccess. Lo que encuentre, podrá variar potencialmente; sin embargo, el mensaje de error suele ser lo suficientemente descriptivo como para determinar cuál es el error sin tener que hacer mayor investigación.

Archivo php.ini configurado inapropiadamente

ForceType:

Cuando está utilizando archivos con una extensión distinta a las extensiones normales para los tipos de archivos, puede utilizar ForceType en el archivo .htaccess para asegurarse de aclarar al servidor cómo va a manejar este archivo (o todos los archivos de la carpeta). Esto también aplica para archivos sin extensión. Tenga en cuenta que esto solo funciona en servidores sin phpsuexec.

Ejemplo: Cuando usted tiene un archivo llamado "item" (tal como usa Nucleus para FancyURL) y quiere que sea interpretado por el servidor como php puede usar el siguiente código en su archivo htaccess:

ForceType application/x-httpd-php

Pero en caso de que sus servidores utilicen phpsuexec, esto resultará en un error interno del servidor. Para solucionar este problema puede simplemente usar SetHandler en lugar de ForceType, luego la línea en su archivo .htaccess debería tener la forma:

SetHandler application/x-httpd-php

php_value:

En un servidor sin phpsuexec es posible usar la sentencia php_value en un archivo .htaccess para cambiar los ajustes de php (en realidad, lo que se hace es sobrescribir los ajustes de php.ini). En un servidor con phpsuexec esto también causará un error interno del servidor.

Para solucionar este problema puede usar un archivo php.ini y colocarlo en la misma carpeta en donde usted pondría su archivo .htaccess. En ese archivo php.ini puede cambiar todos los valores php. Solo debe colocar los valores que desee modificar en ese archivo.

Por ejemplo: si desea establecer el parámetro short_open_tag en Off usted habría utilizado short_open_tag? = off en su archivo .htaccess. Usando el archivo php.ini esto resulta en lo siguiente:

[PHP]
short_open_tag = Off

Recursos adicionales

Este tutorial solo presenta algunos ejemplos comunes del error 500; la resolución de su error dependerá de las características que éste presente, lo ideal es revisar el log o registro de errores para buscar más información sobre qué generó su error. Esto le dará la información suficiente para solventar el problema o investigar en línea con más información a la mano, lo que seguramente, arrojará resultados más exactos en su búsqueda.

¿QUÉ DESEAS SABER?

Intentaremos leer tu mente...