2010-04-22 19 views
101

Esto nunca ha sucedido antes. Usualmente muestra el error, pero ahora solo me da un error interno de 500 servidores. Por supuesto, antes, cuando mostraba el error, eran servidores diferentes. Ahora estoy en un servidor nuevo (tengo la raíz completa, así que si necesito configurarlo en algún lugar de php.ini, puedo.) ¿O tal vez sea algo con Apache?¿Cómo puedo hacer que PHP muestre el error en lugar de darme 500 Internal Server Error

He estado soportando simplemente transfiriendo el archivo a mi otro servidor y ejecutándolo allí para encontrar el error, pero eso se ha vuelto demasiado tedioso. ¿Hay alguna manera de arreglar esto?

+3

Eso suena como un problema de Apache, no un problema PHP Apache lanzará 500 cada vez que tenga problemas de configuración (como mala sintaxis en .htaccess). Verifique su registro de errores de apache para un mensaje de error. –

Respuesta

155

Compruebe las configuraciones error_reporting, display_errors y display_startup_errors en su archivo php.ini. Deben establecerse en E_ALL y "On" respectivamente (aunque no debe usar display_errors en un servidor de producción, deshabilítelo y use log_errors en su lugar si/cuando lo despliega). También puede cambiar estos ajustes (excepto display_startup_errors) en el comienzo de su script para ponerlos en tiempo de ejecución (aunque es posible que no captura todos los errores de esta manera):

error_reporting(E_ALL); 
ini_set('display_errors', 'On'); 

Después de eso, el servidor de reinicio.

+1

¿Cómo apagamos display_errors, pero tenemos PHP para mostrar 200 o 404 en lugar de 500? – Pacerier

+0

No estoy seguro de si fue en 2010, pero no necesita reiniciar el servidor (a menos que use un caché de código de operación como APC) en 2014. –

+0

Incluso después de hacer todo eso, sigo recibiendo el error 500 ... quizás esté llegando de IIS? –

12

Vale la pena señalar que si su error se debe a .htaccess, por ejemplo, falta un rewrite_module, aún verá el error de 500 servidor interno.

+3

En realidad me faltaba un módulo en apache. Lo obtuve mirando el registro de errores (por defecto para ubuntu es /var/log/apache2/error.log) –

2

La habilitación del error de visualización desde el código PHP no funciona para mí. En mi caso, usando NGINX y PHP-FMP, realizo un seguimiento del archivo de registro usando grep. Por ejemplo, sé que el nombre del archivo mycode.php causa el error 500, pero no sé qué línea. Desde la consola, yo uso esto:

/var/log/php-fpm# cat www-error.log | grep mycode.php 

Y tengo la salida:

[04-Apr-2016 06:58:27] PHP Parse error: syntax error, unexpected ';' in /var/www/html/system/mycode.php on line 1458 

Esto ayuda a encontrar la línea en la que tengo el error tipográfico.

7

Utilice "php -l < nombre de archivo >" (que es una 'L') de la línea de comando para generar el error de sintaxis que podría estar causando que PHP arroje el error de estado 500. Algo que va a una salida como:

error

PHP Parse: syntax error, unexpected '}' en el nombre de archivo < > en la línea 18

+1

¡Esto realmente me ayudó! Trazar mi registro de errores no produjo nada, pero esta gema funcionó perfectamente y mostró mi error de sintaxis y el número de línea. Estaba depurando un archivo de clase. ¡Gracias! –

0

tener cuidado de comprobar si

display_errors 

o

error_reporting 

está activo (no es un comentario) en otro lugar en el archivo ini.

Mi servidor de desarrollo se negó a mostrar errores después de la actualización a Kubuntu 16.04 - Revisé php.ini varias veces ... resultó que había un diplay_errors = apagado; cerca de 100 líneas debajo de mi

display_errors = on; 

¡Así que recuerda que el último cuenta!

0

Si todo lo demás falla, intente moverse (es deciren bash) todos los archivos y directorios "de distancia" y volver a agregarlos uno por uno.

Acabo de enterarme de que mi archivo .htaccess hacía referencia a un archivo .htpasswd inexistente. (#silly)

2

Trate de no ir

MAMP > conf > [your PHP version] > php.ini 

pero

MAMP > bin > php > [your PHP version] > conf > php.ini 

y cambiar allí, que trabajó para mí ...

Cuestiones relacionadas