[Résolu] Affichage des erreurs php
Je ne souhaite pas afficher à l'écran les erreurs php. J'ai donc ajouté dans mon fichier .php.ini :
error_reporting = E_ALL & ~ E_DEPRECATED & ~ E_STRICT & ~ E_NOTICE & ~ E_WARNING
display_errors = off
display_startup_errors = off
si j'exécute un phpinfo, j'ai bien le display_errors et le display_startup_errors à off
J'ai même ajouté dans mon script :
error_reporting(E_ALL & ~ E_DEPRECATED & ~ E_STRICT & ~ E_NOTICE & ~ E_WARNING);
ini_set('display_errors', 'off');
ini_set("display_startup_errors", 'off');
et si j'affiche :
echo "display_errors : " . ini_get('display_errors').'';
echo "display_startup_errors : " . ini_get('display_startup_errors');
j'ai bien off et off
Malgré tout cela j'affiche les erreurs à l'écran :
display_errors : Off
display_startup_errors : Off
Notice: Undefined offset: 1 in /home/httpd/x/x/x/xxxxxxxx/www.xxxxxxxx.fr/Gestion tares oculaires/affiche_tares.php on line 68
Notice: Undefined offset: 2 in/Gestion tares oculaires/affiche_tares.php on line 68
Warning: mktime() expects parameter 5 to be int, string given in /home/httpd/x/x/x/xxxxxxxx/www.xxxxxxxx.fr/Gestion tares oculaires/affiche_tares.php on line 69
Je ne sais plus que faire ...
Il est préférable d'utiliser 0 et 1 ainsi :
ini_set('display_errors', 0);
Car dans votre script vous utilisez 1 puis 'off' 6 lignes après, ce qui semble vouloir dire que 1 seulement serai reconnu. Ensuite je pense qu'il ne faut pas mettre d'espace entre le tilde ~ et la valeur.
ini_set('error_log', 'errors.txt');
ini_set('log_errors', 1);
error_reporting(E_ALL & ~E_DEPRECATED & ~E_STRICT & ~E_NOTICE & ~E_WARNING);
ini_set('display_errors', 0);
ini_set("display_startup_errors", 0);
echo "display_errors : " . ini_get('display_errors').'';
echo "display_startup_errors : " . ini_get('display_startup_errors');
J'ai même ajouté un .htaccess avec :
php_flag display_startup_errors off
php_flag display_errors off
j'ai toujours l'affichage des erreurs, warnings et notices
Je vois un fichier .php.ini dans le répertoire du site avec des tilde avec espace et des off au lieu de 0. Pour vérifier correctement les variables, au lieu de les afficher directement il est préférable d'afficher un phpinfo() pour avoir les valeurs locales et globales.
modif du .php.ini selon vos conseils : toujours KO
Execution de phpinfo à la place du display des variables :
display_errors Off Off
display_startup_errors Off Off
Chez moi en local avec un php 7.2.4 et phpinfo :
display_errors On On
display_startup_errors On On
ce script fonctionne sans affichage des notices et warnings donc mes init_set sont correctement interprétés.
Je suis descendu en php 7.2 au lieu du 7.3 chez franceserv et j'ai toujours l'affichage des notices et warnings.
Concernant le die(), je suis dans une boucle (while) qui remplit un tableau. Si je mets le die sur la ligne indiquée, je n'affiche rien car la boucle s'arrête immédiatement et ce n'est pas forcement le premier passage dans cette boucle qui génère la notice.
Si je mets le die à la fin de ma boucle j'affiche les notices.
Je ne sais plus quoi faire...
Pourriez-vous me fournir le fichier d'un script PHP de quelques lignes (5 ou 10 lignes) reproduisant la notification "Notice" par mail à l'adresse admin@franceserv.fr afin que je puisse reproduire le problème de mon côté et que je puisse comprendre ce qui se passe ?
Dans votre script PHP vous avez ce que vous m'avez copié/collé, à savoir du ini_set('display_errors', 0); par exemple, mais ...
Vous avez aussi après le display_errors à off, un require() vers un fichier de connextion MySQL et dans ce fichier ... il y a les 3 lignes magiques :
ini_set("display_startup_errors", 1);
ini_set("display_errors", 1);
error_reporting(E_ALL);
Ce qui fait que le require() est lu est change vos précédents ini_set, tout simplement
Il n'y a pas de quoiassoafbc a écrit :Un GROS GROS merci, je m'arrachais les cheveux alors que je n'en ai guère...
Chez moi, l'include en question n'avait pas ces 3 lignes et ça marchait
AD