2012-01-19 7 views
8

Estoy usando PHP 5.3, CentOS 6.2, httpd 2.2.15, NetBeans 7.0.1 (ejecutándose de forma remota a través de ftp).Deje de imprimir mensajes de error de php en el navegador

Quiero dejar de imprimir mensajes de error en el navegador, es suficiente que se imprima en el error_log de httpd.

Pensé haciendo try/catch Decidiría por mi cuenta cómo manejar el error pero aún se imprime tanto en error_log como en el navegador.

function smic_gettext($phrase){ 

     try{ 
      $tr_text = $this->language_array[$phrase]; 

     } catch(Exception $e){ 
      error_log("Couldn't find any entry in the translation file for ".$phrase.". ".$e); 
      return $phrase; 

     } 

     return $tr_text; 
    } 

¿Cómo debo configurar esto para detener este comportamiento?

He intentado configurar display_errors = Off y display_errors = 0 en php.ini. No hay diferencia (reinicié httpd).

+1

conjunto 'display_errors = Off' – goat

+0

** ** entornos de producción debe tener errores de PHP/avisos deshabilitadas en el archivo' php.ini', y sólo el registro para registrar archivos – Jakub

+0

Nota al margen: los errores en PHP no son excepciones (como en Java, por ejemplo), pero hay una forma de convertirlos en excepciones y manejarlos en consecuencia. Consulte http://www.php.net/manual/en/class.errorexception.php – Mchl

Respuesta

9
display_errors = Off 

en php.ini le permitirá mantener sus errores de registro del sistema , pero no escriba nada al navegador.

+0

Me gustaría hacer esto para todos los scripts, por lo que la configuración de php.ini parece ser la mejor. Probé display_error = Off y display_error = 0, reiniciando httpd pero sin diferencia. – Nicsoft

+0

Has intentado "display_error", pero la palabra clave es "display_errors" –

+0

Disculpa, solo fue un error en mi comentario, utilicé display_errors. – Nicsoft

3

Trate de añadir lo siguiente a la parte superior de la secuencia de comandos:

ini_set('display_errors',0); 

Esto debería establecer el informe de errores a ninguno y anular los servidores de configuración php.ini (que a veces ignoran su error_reporting (0))

+0

error_reporting (0) también deshabilitará el registro en el archivo – Mchl

+0

y la configuración de error_reporting en 0 tampoco causará la grabación de errores. No lo aconsejaría en un entorno de producción. Establecer 'ini_set ('display_errors', 0);' debería ser suficiente. – klennepette

+0

Mchl y klennepette, gracias por la ayuda. Nicsoft, tienen razón, solo ini_set ('display_errors', 0); debería hacer el trabajo. – AlexC

1
+0

Me gustaría hacer esto para todos los scripts, por lo que la configuración de php.ini parece ser la mejor. Probé display_errors = Off y display_errors = 0, reiniciando httpd pero sin diferencia. – Nicsoft

+0

es 'display_errors' no' display_error' – Mchl

+0

En realidad, eso es lo que hice, actualicé mi comentario. – Nicsoft

7

Wheter o no errores de PHP son enviados al frente ser está determinado por la configuración de php.ini: display_errors. Configúrelo en Off para evitar que se emita. Este archivo normalmente se encuentra debajo o /etc/php.ini/etc/php5/php.ini

+0

@DaveRandom OP mencionó que está en CentOS y en CentOS esta suele ser la ruta. – Oldskool

+0

Oh, tienes razón. Lo siento, mi mal ... +1 :-) – DaveRandom

+0

Me gustaría hacer esto para todos los scripts, por lo que la configuración de php.ini parece ser la mejor. Probé display_error = Off y display_error = 0, reiniciando httpd pero sin diferencia. – Nicsoft

3

Es necesario cambiar la configuración de php.ini para display_errorsoff o 0. Usted puede hacer esto en su php.ini reales, con un archivo .htaccess, o llamando a esto en el inicio de la secuencia de comandos:

ini_set('display_errors', '0'); 
+0

Gracias, esto ayudó mucho. – JugglingBob

0

Fwiw, mientras display_errors = off es la línea config-archivo correcto como han dicho otros, en DreamHost (nd posiblemente otras instalaciones), que va en

$HOME/.php/phprc

en lugar de php .ini (que también podría funcionar, pero DreamHost - y, posiblemente, otros - admite phprc).

1

Si el error aparece solo en una línea, es posible evitar la aparición de errores añadiendo sign @ al inicio de esa línea.

@YOUR_CUSTOM_COMMAND

Ejemplo:

@file_get_contents('custom_file.txt'); 
Cuestiones relacionadas