Question

Essayer d'utiliser filegetcsv Pour analyser un fichier CSV et faire des choses avec, en utilisant le code suivant trouvé partout sur Internet, y compris le Définition de la fonction PHP page:

if (($handle = fopen("test.csv", "r")) !== FALSE) {
    while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
        print_r($data);
    }
    fclose($handle);
}

Mais le code me donne une boucle infinie d'avertissements sur le $data = ligne:

PHP Warning: fgetcsv() expects parameter 1 to be resource, boolean given in...
  1. Je sais que le fichier que j'ouvre est un fichier valide, car si j'ajoute un caractère factice au nom de fichier, j'obtiens une erreur différente et aucune boucle.
  2. Le fichier est dans un dossier avec des autorisations complètes.
  3. Je n'utilise pas un CSV généré par un Excel sur Mac (Il y a une erreur originale là-bas)
  4. PHP version 5.1.6, il ne devrait donc y avoir aucun problème avec la fonction
  5. Je sais que le fichier n'est pas trop grand ou mal formé, car j'ai continué à rétrécir le fichier d'origine pour voir si c'était un problème et finalement j'ai juste créé un fichier personnalisé dans le bloc-notes avec rien de plus que deux lignes comme:

    Value1a, valeur1b, valeur1c, valeur1d

Toujours en boucle et en ne donnant aucune donnée. Voici le code complet avec lequel je travaille maintenant (en utilisant une variable supérieure au nombre de lignes afin que je puisse prouver qu'elle bouclera infiniment sans donner à mon serveur une boucle infinie)

if ($handle = fopen($_SERVER['DOCUMENT_ROOT'].'/tmp/test-csv-file.csv', 'r') !== FALSE) {
    while ((($data = fgetcsv($handle, 1000, ',')) !== FALSE) && ($row < 10)) {
        print_r($data);
        $row++;
    }
    fclose($handle);
}

J'ai donc vraiment deux questions.

1) Que pourrais-je négliger qui cause cette boucle? Je suis à moitié convaincu que c'est quelque chose de vraiment "face-palme" simple ...

2) Pourquoi le code recommandé pour cette fonction est-il quelque chose qui peut provoquer une boucle infinie si le fichier existe-t-il, mais il y a un problème inconnu? J'aurais pensé que le but du !== FALSE Et ainsi de suite serait d'empêcher ce genre de choses.

Pas de solution correcte

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top