PHP notice ennuyante

Eléphanteau du PHP | 40 Messages

16 sept. 2016, 17:02

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

Mammouth du PHP | 688 Messages

16 sept. 2016, 18:08

for ($i=0; $i < sizeof($files); $i++) {
c'est plus propre ainsi.

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

16 sept. 2016, 22:08

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
Quand tout le reste a échoué, lisez le mode d'emploi...

Eléphanteau du PHP | 40 Messages

19 sept. 2016, 09:51

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:

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

19 sept. 2016, 10:11

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 ;-)
Quand tout le reste a échoué, lisez le mode d'emploi...

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

19 sept. 2016, 13:33

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)

@+
Il en faut peu pour être heureux ......

Eléphanteau du PHP | 40 Messages

19 sept. 2016, 15:05

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

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

20 sept. 2016, 17:20

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:
Quand tout le reste a échoué, lisez le mode d'emploi...

Eléphanteau du PHP | 40 Messages

20 sept. 2016, 17:23

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:

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

21 sept. 2016, 09:24

|grep cequeveuxgarder :)

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

@+
Il en faut peu pour être heureux ......