2010-01-01 37 views

Respuesta

236

Realmente debería corregir lo que está causando la advertencia, pero puede controlar la visibilidad de los errores con error_reporting. Para omitir los mensajes de advertencia, podría utilizar algo como:

error_reporting(E_ERROR | E_PARSE); 
+32

'E_ALL^​​E_WARNING', habilitando todos los informes de error además de las advertencias, parece una mejor opción de argumento para' error_reporting'. –

+0

en general, estoy de acuerdo, en mi caso generar el mensaje de advertencia fue un comportamiento intencionado porque era parte de mis pruebas unitarias. – pgee70

5

Puede suprimir la advertencia utilizando error_reporting pero la mejor manera es corregir su script en primer lugar.

Si no sabe cómo, edite su pregunta y muéstrenos la línea en cuestión y la advertencia que se muestra.

+1

resuelto sin necesidad de escritura he usado error_reporting (0); – Alireza

+7

Safaali, deberías solucionar los problemas, no ignorarlos. – Sampson

+2

Safaali, dado que tiene un cierto interés en PHP, hágase un favor y estudie la posibilidad de corregir ese guión. –

79

Puede poner @ en frente de su llamada a la función de suprimir todos los mensajes de error.

@yourFunctionHere(); 
+3

Esto oculta el error, todavía está sucediendo. Los errores hacen que PHP se desacelere, por lo que es mejor corregir el error si es posible. Usar @ incluso ralentiza el código cuando no hay un error. http://vega.rd.no/articles/php-performance-error-suppression – dprevite

+29

veces (por desgracia) que realmente no tienen una opción. Por ejemplo, la función PHP parse_url() genera Advertencias para URL "severamente mal formadas", lo cual es posiblemente un error ya que la función devuelve falso en este caso. Por lo que debe o bien tolerar estas advertencias PHP en su salida del programa (puede ser inaceptable para aplicaciones de analizador/validador), suprimir las advertencias de alguna manera, o evitar el comportamiento de PHP roto escribiendo su propio analizador/validador para las direcciones URL. En este caso, elijo el @. – Peter

+1

IMPORTANTE: Utilice este método si y sólo si (1) no se puede solucionar el problema que genera la advertencia ni (2) ocultar sus advertencias de los usuarios finales a través de php error_reporting ... Cómo ocultar las advertencias de sus desarrolladores no es una solución. –

28

Para suprimir las advertencias, dejando el resto de la presentación de informes de errores habilitado:

error_reporting(E_ALL^E_WARNING); 
9

No responder exactamente la pregunta, pero creo que esto es un mejor compromiso en algunas situaciones:

que tenía una mensaje de advertencia como resultado de una instrucción printf() en una biblioteca de terceros. Sabía exactamente cuál era la causa: un trabajo temporal mientras el tercero arreglaba su código. Estoy de acuerdo en que las advertencias no deben ser suprimidas, pero no pude demostrar mi trabajo a un cliente con el mensaje de advertencia apareciendo en la pantalla. Mi solución:

printf('<div style="display:none">'); 
    ...Third-party stuff here... 
printf('</div>'); 

La advertencia todavía estaba en la fuente de la página como un recordatorio para mí, pero invisible para el cliente.

+4

Personalmente, me gustaría usar [ 'ob_start()'] (http://php.net/manual/en/function.ob-start.php) y [ 'ob_end_clean()'] (http: // php. net/manual/es/function.ob-end-clean.php) en su lugar. De esta forma, las cosas ni siquiera se envían al navegador (lo que hace aquí). – h2ooooooo

+6

Es por eso que incluí "algunas situaciones", "las advertencias no deben ser suprimidas" y "recordatorio para mí". – DaveWalley

+1

Antes de votar más abajo, por favor lea mi respuesta. Tenga en cuenta "de terceros", "compromiso" y el comentario anterior. Agregué esta respuesta en caso de que alguien más esté en la misma situación en la que me encontraba, y en esa situación específica, esto me salvó, mientras que todas las otras respuestas no habrían sido tan buenas. La próxima vez lo pensaré dos veces antes de ser útil. – DaveWalley

15

Si no desea mostrar advertencias, así como los errores utilizan

// Turn off all error reporting 
error_reporting(0); 

Error Reporting - PHP Manual

4

Creo que una mejor solución es la configuración de .htaccess De esa manera usted no tiene que alterar el código de solicitud. Aquí están las directivas de Apache 2

php_flag display_startup_errors off 
php_flag display_errors off 
php_flag html_errors off 
php_value docref_root 0 
php_value docref_ext 0 
4

en núcleo de PHP para ocultar mensaje de advertencia de establecer error_reporting (0) en la parte superior del archivo de inclusión común o un archivo individual.

En Wordpress hide Warnings and Notices complemento siguiente código en el archivo wp-config.php

ini_set('log_errors','On'); 
ini_set('display_errors','Off'); 
ini_set('error_reporting', E_ALL); 
define('WP_DEBUG', false); 
define('WP_DEBUG_LOG', true); 
define('WP_DEBUG_DISPLAY', false); 
1

Si desea suprimir las advertencias y algunos otros tipos de error (por ejemplo, anuncios) al tiempo que muestra todos los demás errores, puede do:

error_reporting(E_ALL & ~E_WARNING & ~E_NOTICE); 
0

Lo hago así en mi php.ini:

error_reporting = E_ALL & ~ ~ E_NOTICE E_WARNING & & ~ ~ E_STRICT & E_DEPRECATED

que registra sólo errores fatales y no hay advertencias

+0

Si esta no es una respuesta, debe publicarse como un comentario u otra pregunta – Robert

+0

Robert.Esta es una respuesta. – navid

Cuestiones relacionadas