Quelles sont les raisons pour lesquelles PHP ferait écho aux erreurs, même avec error_reporting (0)?

StackOverflow https://stackoverflow.com/questions/78296

  •  09-06-2019
  •  | 
  •  

Question

Quelles sont certaines des raisons pour lesquelles PHP forcerait les erreurs à s'afficher, peu importe ce que vous lui dites de désactiver?

j'ai essayé

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

sans chance.

Était-ce utile?

La solution

Notez les réserves contenues dans le manuel à l'adresse http://fr.php.net/error_reporting :

  
    

La plupart des erreurs E_STRICT sont évaluées au moment de la compilation. Par conséquent, ces erreurs ne sont pas signalées dans le fichier où error_reporting est amélioré pour inclure les erreurs E_STRICT (et inversement).

  

Si votre système sous-jacent est configuré pour signaler les erreurs E_STRICT, celles-ci peuvent être générées avant même que votre code ne soit considéré. N'oubliez pas, error_reporting / ini_set sont des évaluations à l'exécution, ainsi que tout ce qui est exécuté dans un environnement "avant exécution". la phase ne verra pas leurs effets.

D'après votre commentaire, votre erreur est ...

  

Erreur d'analyse: erreur de syntaxe, T_VARIABLE inattendu, en attente de ',' ou ';' dans /usr/home/REDACTED/public_html/dev.php à la ligne 11

Ensuite, le même concept général s’applique. Votre code n'est jamais exécuté, car il est syntaxiquement invalide (vous avez oublié un ';'). Par conséquent, votre rapport de modification d'erreur n'est jamais rencontré.

Résoudre ce problème nécessite une modification du rapport d'erreur au niveau du système. Par exemple, sur Apache, vous pourrez peut-être placer ...

php_value error_reporting 0

dans un fichier .htaccess pour les supprimer tous, mais cela dépend de la configuration du système.

De manière pragmatique, n'écrivez pas de fichiers avec des erreurs de syntaxe:)

Autres conseils

Pour empêcher les erreurs de s'afficher, vous pouvez

  • Écrivez dans un fichier .htaccess: php_flag display_errors 0
  • Divisez votre code en modules séparés où le Le fichier PHP principal (parent) définit uniquement error_logging puis include () le autres fichiers.

Utilisez phpinfo pour rechercher le fichier php.ini chargé et le modifier en masquer les erreurs. Il remplace ce que vous avez mis dans votre script.

set_error_handler () est-il utilisé n'importe où dans votre script? Ceci annule error_reporting (0) .

Utilisez les erreurs log_errors pour qu'elles soient consignées au lieu d'être affichées

Si le paramètre est spécifié dans Apache à l'aide de php_admin_value, il ne peut pas être modifié dans .htaccess ni dans l'exécution. Voir: http://docs.php.net/configuration.changes

  

De manière pragmatique, n'écrivez pas de fichiers avec des erreurs de syntaxe:)

Pour vous assurer qu'il n'y a pas d'erreur de syntaxe dans votre fichier, exécutez la procédure suivante:

php -l YOUR_FILE_HERE.php

Ceci produira quelque chose comme ceci:

PHP Parse error:  syntax error, unexpected '}' in Connection.class.php on line 31

Ajoutez simplement le code ci-dessous dans votre fichier index.php :

ini_set('display_errors', False);
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top