58 votes

Désactiver les avertissements et les erreurs sur php/mysql

Je suis attendu et les avertissements, et tiens à les désactiver sur mon fichier php. les erreurs sont:

Warning: fsockopen()

et les avis sont:

Notice: A non well formed numeric value encountered in

J'ai l'intention d'utiliser cron pour ce script php, et ne veulent pas avoir des erreurs ou des avis connecté n'importe où... c'est à dire cpanel journal des erreurs etc...

149voto

pixeline Points 8713

Lorsque vous êtes sûr que votre script est parfaitement travailler, vous pouvez vous débarrasser de l'Avertissement et avis comme celui-ci: Mettre cette ligne au début de votre script php:

error_reporting(E_ERROR);

Avant cela, lorsque vous travaillez sur votre script, je vous conseille de bien le débogage de votre script, de sorte que tous les avis ou avertissement disparaissent un par un. Donc, vous devez tout d'abord définir comme détaillé que possible avec:

error_reporting(E_ERROR | E_WARNING | E_PARSE | E_NOTICE);

Mise à JOUR : comment faire pour enregistrer les erreurs au lieu de les afficher Comme suggéré dans les commentaires, la meilleure solution est d'enregistrer les erreurs dans un fichier seulement le développeur php voit les messages d'erreur, pas les utilisateurs. Une mise en œuvre possible est via la .fichier htaccess, utile si vous n'avez pas accès au php.fichier 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>

20voto

Mike B Points 18950

Ajouter des fonctions avec le symbole " @ " pour supprimer certaines erreurs, par opposition à la désactivation de TOUS les rapports d'erreurs.

Plus d'Infos: http://php.net/manual/en/language.operators.errorcontrol.php

PHP supporte un contrôle d'erreur de l'opérateur: le signe arobase (@). Lorsque ajouté à une expression en PHP, tous les messages d'erreur susceptibles d'être générées par cette expression sera ignoré.

@fsockopen();

14voto

Darrell Points 91

Toujours afficher les erreurs sur le serveur d'évaluation. Ne jamais afficher les erreurs sur le serveur de production.

Écrire un script pour déterminer si la page est à l'échelle locale, les tests ou le serveur live, et de définir $état de "local", "test", ou "en direct". Alors:

if( $state == "local" || $state == "testing" )
{
 ini_set( "display_errors", "1" );
 error_reporting( E_ALL & ~E_NOTICE );
}
else
{
 error_reporting( 0 );
}

14voto

PHP error_reporting de référence:

// 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);

2voto

Sabeen Malik Points 8542

vous pouvez définir le type de rapport d'erreurs que vous avez besoin dans php.ini ou en utilisant la fonction error_reporting() la fonction sur le haut de votre script.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X