Respuestas:
Realmente deberías arreglar lo que sea que esté causando la advertencia, pero puedes controlar la visibilidad de los errores con error_reporting()
. Para omitir los mensajes de advertencia, puede usar algo como:
error_reporting(E_ERROR | E_PARSE);
E_ALL ^ E_WARNING
, habilitar todos los informes de errores además de las advertencias, parece una mejor opción de argumento para error_reporting
.
Puede poner una @ delante de su llamada de función para suprimir todos los mensajes de error.
@yourFunctionHere();
dns_get_record
lanzarán advertencias. Su código puede compensar la advertencia, pero aún así los arroja. Desactivar el informe de errores funciona en el servidor de producción, pero no en el servidor de desarrollo. Si está generando contenido XML, la advertencia hará que el navegador no se procese porque el servidor está enviando XML con formato incorrecto causado por la advertencia. A veces, desea eso en desarrollo, pero no por algo causado por una falla temporal de búsqueda de DNS que ya compensa.
Si no desea mostrar advertencias y errores, use
// Turn off all error reporting
error_reporting(0);
en Core Php para ocultar el conjunto de mensajes de advertencia error_reporting (0) en la parte superior del archivo de inclusión común o archivo individual.
En Wordpress, oculte las advertencias y avisos y agregue el 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);
No responde exactamente la pregunta, pero creo que este es un mejor compromiso en algunas situaciones:
Recibí un mensaje de advertencia como resultado de una declaración printf () en una biblioteca de terceros. Sabía exactamente cuál era la causa: una solución temporal mientras el tercero reparaba su código. Estoy de acuerdo en que las advertencias no deben suprimirse, pero no pude demostrar mi trabajo a un cliente con el mensaje de advertencia que aparece 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.
ob_start()
y en su ob_end_clean()
lugar. De esta manera, las cosas ni siquiera se envían al navegador (lo que hace aquí).
Creo que la mejor solución es la configuración de .htaccess De esa manera, no tiene que alterar el código de la aplicación. Aquí hay directivas para Apache2
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
Puede suprimir la advertencia usando error_reporting, pero la mejor manera es arreglar 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.
Ya hay una respuesta con el operador de control de errores, pero carece de explicación. Puede usar el @
operador con cada expresión y oculta los errores (excepto los Errores fatales).
@$test['test']; //PHP Notice: Undefined variable: test
@(14/0); // PHP Warning: Division by zero
//This is not working. You can't hide Fatal Errors this way.
@customFuntion(); // PHP Fatal error: Uncaught Error: Call to undefined function customFuntion()
Para la depuración es un método rápido y perfecto. Pero nunca debe usarlo en producción ni incluirlo permanentemente en su versión local. Le dará mucha irritación innecesaria.
Deberías considerar en su lugar:
1. Configuración de informes de errores como se menciona en la respuesta aceptada.
error_reporting(E_ERROR | E_PARSE);
o desde la configuración PHP INI
ini_set('display_errors','Off');
2. Excepciones de captura
try {
$var->method();
} catch (Error $e) {
// Handle error
echo $e->getMessage();
}