Page 1 sur 1

PHP notice ennuyante

Posté : 16 sept. 2016, 17:02
par fitnopk
Bonjour,

Je commence tout juste à utiliser le PHP aujourd'hui et j'ai une erreur de type E_NOTICE qui ne cesse de revenir. Je sais qu'elle ne sont pas importantes mais ça m'ennuie de la voir à chaque exécution du script.

Code : Tout sélectionner

~/Téléchargements/php[0]$> php index.php Spécifiez le chemin des fichiers source que vous souhaitez convertir en .csv, séparés par des ';' : ./acc Récupération des données de acc en cours... Traitement des données en cours (100.0%)... PHP Notice: Undefined offset: 1 in /home/kpontif/Téléchargements/php/comptes.php on line 259 Notice: Undefined offset: 1 in /home/kpontif/Téléchargements/php/comptes.php on line 259 Conversion terminée. Souhaitez-vous convertir un ou plusieurs autre(s) fichier(s)? [O/N] : N
La ligne 259 correspond à mon premier for dans cette ébauche de code. Malgré le nombre de ligne, cette ébauche est la seule chose qui s’exécute puisque le reste n'est pas relié.

Code : Tout sélectionner

function traitementComptesContacts() { print "Spécifiez le chemin des fichiers source que vous souhaitez convertir en .csv, séparés par des ';' :\n"; $files = explode(";", trim(fgets(STDIN))); for ($i=0; $files[$i]; $i++) { $path = explode("/", $files[$i]); $fileName = $path[sizeof($path) - 1]; if ($fileFd = @fopen($files[$i], 'r')) { print "Récupération des données de " . $fileName . " en cours...\n"; /** Fonction de récupération des lignes retournant le nombre de ligne $comptes_contacts = lireComptesContacts($files[$i]); **/ for ($k=1; $k<=438; $k++) { /* $k = n° de ligne */ usleep(100000); /* Simulation de l'éxecution */ print "\rTraitement des données en cours (" . number_format($k / 438 * 100, 1) . "%)..."; /* Fonction de traitement des données */ } print "\n"; fclose($fileFd); } else print "Le fichier '" . $fileName . "' indiqué par le chemin '" . $files[$i] . "' n'a pas pu être trouvé ou ouvert.\n"; } }
Par ailleurs si quelqu'un saurait m'expliquer comment mettre tous les messages d'erreur dans un fichier de log car j'ai l'habitude d'utiliser dup2 en C mais je ne trouve pas de fonction similaire.

Merci d'avance

Re: PHP notice ennuyante

Posté : 16 sept. 2016, 18:08
par tof73
for ($i=0; $i < sizeof($files); $i++) {
c'est plus propre ainsi.

Re: PHP notice ennuyante

Posté : 16 sept. 2016, 22:08
par @rthur
Par ailleurs si quelqu'un saurait m'expliquer comment mettre tous les messages d'erreur dans un fichier de log car j'ai l'habitude d'utiliser dup2 en C mais je ne trouve pas de fonction similaire.
Les messages d'erreur sont déjà dans le fichier log d'apache.
Fait un phpinfo() pour savoir où il se trouve.

Si tu ne veux pas les affciher dans ta page, il faut faire un ini_set("display_errors", 0);
Toutefois ma recommandation est de le mettre à 0 en prod mais à 1 en dev pour être sûr de coder proprement

Re: PHP notice ennuyante

Posté : 19 sept. 2016, 09:51
par fitnopk
for ($i=0; $i < sizeof($files); $i++) {
c'est plus propre ainsi.
Effectivement j'ai plus l'e_notice maintenant merci :D
Les messages d'erreur sont déjà dans le fichier log d'apache.
Fait un phpinfo() pour savoir où il se trouve.
J'ai fais un phpinfo() mais il y a tellement d'informations que je me perds dedans :shock:
Si tu ne veux pas les affciher dans ta page, il faut faire un ini_set("display_errors", 0);
Toutefois ma recommandation est de le mettre à 0 en prod mais à 1 en dev pour être sûr de coder proprement
Merci pour le conseil :priere:

Re: PHP notice ennuyante

Posté : 19 sept. 2016, 10:11
par @rthur
Les messages d'erreur sont déjà dans le fichier log d'apache.
Fait un phpinfo() pour savoir où il se trouve.
J'ai fais un phpinfo() mais il y a tellement d'informations que je me perds dedans :shock:
Ctrl + F puis log ;-)

Re: PHP notice ennuyante

Posté : 19 sept. 2016, 13:33
par moogli
sinon pour le parcourt du tableau tu peux utiliser simplement foreach se sera plus performant que le calcul de la taille à chaque itération :)

pour les logs de php, vu que tu semble l'utiliser en ligne de commande c'est pas dans le logs d'apache mais dans celui de php (qui est paramétrable dans le php.ini : error_log)

@+

Re: PHP notice ennuyante

Posté : 19 sept. 2016, 15:05
par fitnopk
Ctrl + F puis log ;-)
C'est pas sur une page web je suis sur mon terminal :lol:
sinon pour le parcourt du tableau tu peux utiliser simplement foreach se sera plus performant que le calcul de la taille à chaque itération :)

pour les logs de php, vu que tu semble l'utiliser en ligne de commande c'est pas dans le logs d'apache mais dans celui de php (qui est paramétrable dans le php.ini : error_log)
Ok je vais voir ça :D

Re: PHP notice ennuyante

Posté : 20 sept. 2016, 17:20
par @rthur
Ctrl + F puis log ;-)
C'est pas sur une page web je suis sur mon terminal :lol:
Tu es sur un terminal et tu ne connais pas grep ? :twisted:

Re: PHP notice ennuyante

Posté : 20 sept. 2016, 17:23
par fitnopk
Ctrl + F puis log ;-)
C'est pas sur une page web je suis sur mon terminal :lol:
Tu es sur un terminal et tu ne connais pas grep ? :twisted:
J'ai jamais trop su utiliser cette commande :lol:

Re: PHP notice ennuyante

Posté : 21 sept. 2016, 09:24
par moogli
|grep cequeveuxgarder :)

dans ton cas : php -r phpinfo(); |grep error_log

@+