2011-05-06 21 views
12

Hola, sé que hay algunas publicaciones sobre este tema y las he revisado todas.No se puede obtener php display_errors habilitado

No puedo activar la configuración display_errors en php sin importar lo que haga !!!

Estoy usando una caja virtual con php 5.3 instalado con Apache2 ejecutándose. He intentado todo lo que puedo pensar para que funcionen los errores de visualización, pero parece que nada funciona.

he puesto display_errors php_flag en mi archivo .htaccess Incluso me han permitido directamente en el archivo php.ini

display_errors = 1 

y también trató

display_errors = On 

estoy usando los valores por defecto para apache sites-enabled ¿hay algo que deba hacer aquí para que esto funcione? Nunca he tenido este problema ejecutando php en mi mac usando mamp.

¡Cualquier sugerencia sería muy apreciada, esto me está volviendo loco!

Respuesta

59

También puede activarlo en su script PHP general:

ini_set("display_errors", 1); 
ini_set("track_errors", 1); 
ini_set("html_errors", 1); 
error_reporting(E_ALL); 

Si esto no funciona, entonces intente una solución rápida de la primera:

set_error_handler("var_dump"); 

podría utilizarse para replicar el original comportamiento, si es reprimido por alguna otra circunstancia.

Tome en cuenta que esto sólo funciona para permitir que los errores de ejecución . Si sospecha errores de análisis, definitivamente deberá habilitar la visualización de errores en el php.ini/.htaccess/.user.ini. - De lo contrario, realice un script contenedor test.php con las instrucciones anteriores, luego include() el script defectuoso.

+5

Ooh, estableciendo 'var_dump' como el manejador de errores es una _great_ idea. ¡Gracias! –

+0

ini_set ("display_errors", 1); estableciendo esto en mi index.php tiene el encendido, lo cual es extraño porque eso fue lo primero que probé que anteriormente no funcionaba. Es extraño que nada más haya logrado que funcione, ¡gracias por la respuesta, aunque parece que ha resuelto el problema! –

+0

todavía sin suerte! :( – minhajul

2

Probar error_reporting = E_ALL. Además, ¿estás seguro de que estás editando el php.ini correcto?

+0

estoy editando/etc/php5/apache php.ini a mi conocimiento es el único archivo ini ¿verdad? –

+1

Creo que te refieres a la opción 'error_reporting';' display_errors' solo toma '1' o' 0'. –

+0

Mike: normalmente sí en un servidor Debian o Ubuntu. – tamasd

2

por lo general yo uso (en el script PHP Trato de depuración):

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

Que por lo general hace el trabajo, pero si usted tiene un paréntesis sin igual desagradable que no podría ser suficiente. Entonces, si aún no funciona, podría depender de algún código de errores de PHP.

Incluso podría ser que esté editando el php.ini incorrecto: use phpinfo() y busque las partes en "Archivo de configuración cargada" y "Archivos .ini adicionales analizados".

P.S. : display_errors = 1 y display_errors = On en php.ini son equivalentes.

2

Inténtelo:

grep "display_errors" /etc/php5/apache2/php.ini 

sólo para comprobar cuántos vez que aparezca.

+0

Gracias @Roman Petit. Esta es siempre una buena idea. La segunda configuración sobrescribe la primera, si hay varias entradas. – carbontax

7

por display_errors:

Aunque display_errors pueden establecerse en tiempo de ejecución (con ini_set()), no tendrá ningún efecto si el script tiene errores fatales. Esto se debe a que la acción de tiempo de ejecución deseada no se ejecuta.

por lo que si se trata de problemas que no muestra errores y puede que tenga errores de sintaxis en los scripts, que muestra los errores de ajuste por ini_set no ayudará, esto requiere cambios en php.ini

sudo sed -i 's/display_errors = Off/display_errors = On/' /etc/php5/apache2/php.ini 
+1

Acaba de eliminar el último 'carácter;) Y ciertamente ayudó. Gracias :) – Waqas

4

realidad , en php.ini hay dos lugares donde puede encontrar display_errors línea. Por error, puede habilitar el primero, pero está anulado por el último display_errors = Off (tal cosa que me indujo a error).

Hay bloque que va primero en el archivo:

;;;;;;;;;;;;;;;;;;; 
; Quick Reference ; 
;;;;;;;;;;;;;;;;;;; 
; The following are all the settings which are different in either the production 
; or development versions of the INIs with respect to PHP's default behavior. 
; Please see the actual settings later in the document for more details as to why 
; we recommend these changes in PHP's behavior. 

; display_errors 
; Default Value: On 
; Development Value: On 
; Production Value: Off 

Y la última ocurrencia de display_errors mucho menor en el archivo:

; This directive controls whether or not and where PHP will output errors, 
; notices and warnings too. Error output is very useful during development, but 
; it could be very dangerous in production environments. Depending on the code 
; which is triggering the error, sensitive information could potentially leak 
; out of your application such as database usernames and passwords or worse. 
; It's recommended that errors be logged on production servers rather than 
; having the errors sent to STDOUT. 
; Possible Values: 
; Off = Do not display any errors 
; stderr = Display errors to STDERR (affects only CGI/CLI binaries!) 
; On or stdout = Display errors to STDOUT 
; Default Value: On 
; Development Value: On 
; Production Value: Off 
; http://php.net/display-errors 
display_errors = Off 

Asegúrese de cambiar última ocurrencia de display_errors . Simplemente configúrelo en display_errors = On, , reinicie Apache y obtendrá lo que necesita.

0

En mi caso, lo que tenía que hacer es

set_error_handler(NULL); 
<the code to debug on screen> 
restore_error_handler(); 

que había definido un controlador de errores personalizado, que omite por completo el controlador de errores de PHP por defecto. Sin embargo, no quería eliminar mi controlador de error de error personalizado de forma permanente. Por lo tanto, utilicé set_error_handler(NULL); para restablecer el error_handler a su valor predeterminado. Usé restore_error_handler(); para recuperar mi error_handler personalizado original.

Cuestiones relacionadas