ini_set - Desactiva las advertencias y errores en php/mysql
php error_reporting 32767 (6)
Recibo avisos y advertencias y me gustaría desactivarlos en mi archivo php. los errores son:
Warning: fsockopen()
y los avisos son:
Notice: A non well formed numeric value encountered in
Estoy planeando usar cron para este script php y no quiero recibir ningún error o aviso conectado en ningún lugar.
Cuando esté seguro de que su script está funcionando perfectamente, puede deshacerse de Warning y avisos como este: Ponga esta línea al comienzo de su script php:
error_reporting(E_ERROR);
Antes de eso, cuando trabaje en su secuencia de comandos, le aconsejaría que depure correctamente su secuencia de comandos para que todos los avisos o advertencias desaparezcan uno por uno. Por lo tanto, primero debe establecerlo lo más detallado posible con:
error_reporting(E_ERROR | E_WARNING | E_PARSE | E_NOTICE);
ACTUALIZACIÓN: cómo registrar errores en lugar de mostrarlos Como se sugiere en los comentarios, la mejor solución es registrar errores en un archivo para que solo el desarrollador de PHP vea los mensajes de error, no los usuarios. Una posible implementación es a través del archivo .htaccess, útil si no tiene acceso al archivo php.ini ( source ).
# supress php errors
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
# enable PHP error logging
php_flag log_errors on
php_value error_log /home/path/public_html/domain/PHP_errors.log
# prevent access to PHP error log
<Files PHP_errors.log>
Order allow,deny
Deny from all
Satisfy All
</Files>
Mostrar siempre errores en el servidor de prueba. Nunca muestre errores en el servidor de producción.
Escriba una secuencia de comandos para determinar si la página está en un servidor local, de prueba o en vivo, y configure $ state como "local", "prueba" o "en vivo". Entonces:
if( $state == "local" || $state == "testing" )
{
ini_set( "display_errors", "1" );
error_reporting( E_ALL & ~E_NOTICE );
}
else
{
error_reporting( 0 );
}
Prefiera las funciones con el símbolo ''@'' para suprimir ciertos errores, en lugar de desactivar TODOS los informes de errores.
Más información: http://php.net/manual/en/language.operators.errorcontrol.php
PHP admite un operador de control de errores: el signo at (@). Cuando se antepone a una expresión en PHP, cualquier mensaje de error que pueda ser generado por esa expresión será ignorado.
@fsockopen();
Referencia de error_reporting PHP:
// Turn off all error reporting
error_reporting(0);
// Report simple running errors
error_reporting(E_ERROR | E_WARNING | E_PARSE);
// Reporting E_NOTICE can be good too (to report uninitialized
// variables or catch variable name misspellings ...)
error_reporting(E_ERROR | E_WARNING | E_PARSE | E_NOTICE);
// Report all errors except E_NOTICE
// This is the default value set in php.ini
error_reporting(E_ALL ^ E_NOTICE);
// Report all PHP errors (see changelog)
error_reporting(E_ALL);
// Report all PHP errors
error_reporting(-1);
// Same as error_reporting(E_ALL);
ini_set(''error_reporting'', E_ALL);
Si no puede acceder a su archivo php.ini por alguna razón, deshabilite los errores a stdout ( display_errors
) en un archivo .htaccess en cualquier directorio agregando la siguiente línea:
php_flag display_errors off
Además, puede agregar el registro de errores a un archivo:
php_flag log_errors on
puede establecer el tipo de informe de errores que necesita en php.ini o mediante el uso de la función error_reporting () en la parte superior de la secuencia de comandos.