[Résolu] Affichage des erreurs php

Quelque chose ne fonctionne pas alors qu'il vous semble que le soucis ne vient pas de vous ? Vous avez des questions sur nos services et vous pensez que vos préoccupation peuvent intéresser d'autres hébergés ? N'hésitez pas à nous contacter.
Répondre
Assoafbc
Messages : 21
Inscription : 21 janvier 2020 à 16:31

Bonjour
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 ...
Avatar de l’utilisateur
Elodie
Fondatrice / Responsable
Fondatrice / Responsable
Messages : 7937
Inscription : 2 avril 2010 à 20:14

Bonjour,

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.
Vous avez une question ? Posez-la de préférence sur le forum et si ça demande un contact plus instantané, n'hésitez pas à vous rendre sur le t'chat IRC. Si votre question est personnelle, contactez-nous directement.
Assoafbc
Messages : 21
Inscription : 21 janvier 2020 à 16:31

j'ai modifié mon script suivant vos indications :

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
Avatar de l’utilisateur
Elodie
Fondatrice / Responsable
Fondatrice / Responsable
Messages : 7937
Inscription : 2 avril 2010 à 20:14

Ca ne sera pas pris en compte via le .htaccess en PHP-FPM.

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.
Vous avez une question ? Posez-la de préférence sur le forum et si ça demande un contact plus instantané, n'hésitez pas à vous rendre sur le t'chat IRC. Si votre question est personnelle, contactez-nous directement.
Avatar de l’utilisateur
Elodie
Fondatrice / Responsable
Fondatrice / Responsable
Messages : 7937
Inscription : 2 avril 2010 à 20:14

Vous pouvez également faire un die("end") après la ligne de la première erreur afin d'exclude une éventuelle include ou un require menant vers un autre fichier possédant un display_error à on, car j'en vois beaucoup dans d'autres scripts PHP. Ca vous permettrai de vérifier si ca ne vient pas simplement de ça.
Vous avez une question ? Posez-la de préférence sur le forum et si ça demande un contact plus instantané, n'hésitez pas à vous rendre sur le t'chat IRC. Si votre question est personnelle, contactez-nous directement.
Assoafbc
Messages : 21
Inscription : 21 janvier 2020 à 16:31

Bonjour,

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...
Avatar de l’utilisateur
Elodie
Fondatrice / Responsable
Fondatrice / Responsable
Messages : 7937
Inscription : 2 avril 2010 à 20:14

D'accord.

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 ?
Vous avez une question ? Posez-la de préférence sur le forum et si ça demande un contact plus instantané, n'hésitez pas à vous rendre sur le t'chat IRC. Si votre question est personnelle, contactez-nous directement.
Avatar de l’utilisateur
Elodie
Fondatrice / Responsable
Fondatrice / Responsable
Messages : 7937
Inscription : 2 avril 2010 à 20:14

Je viens de comprendre votre problème et il est très simple.

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 ;)
Vous avez une question ? Posez-la de préférence sur le forum et si ça demande un contact plus instantané, n'hésitez pas à vous rendre sur le t'chat IRC. Si votre question est personnelle, contactez-nous directement.
Assoafbc
Messages : 21
Inscription : 21 janvier 2020 à 16:31

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
Avatar de l’utilisateur
Elodie
Fondatrice / Responsable
Fondatrice / Responsable
Messages : 7937
Inscription : 2 avril 2010 à 20:14

assoafbc 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
Il n'y a pas de quoi :)
Vous avez une question ? Posez-la de préférence sur le forum et si ça demande un contact plus instantané, n'hésitez pas à vous rendre sur le t'chat IRC. Si votre question est personnelle, contactez-nous directement.
Répondre