IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

[Tableaux] Glob() ne fonctionne pas


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    224
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 224
    Par défaut [Tableaux] Glob() ne fonctionne pas
    Bonjour

    J’essaye de faire fonctionner ce petit bout de code de test :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    <?php
    $files = glob("*.*");
    foreach ($files as $filename) {
    echo "$filename occupe " . filesize($filename) . " octets\n";
    }
    ?>
    J’ai réduit mon code initial qui donnait le même résultat négatif; j’avais repris un Glob qui fonctionne parfaitement dans une autre page mais pas chez le même hébergeur.

    Le résultat : Invalid argument supplied for foreach()

    Naturellement, il y a qqes fichiers dans le même répertoire que cette page Php.

    Il semble bien que Glob() ne produise pas la liste des fichiers.

    Merci par avance de vos conseils.

    Francois

  2. #2
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Par défaut
    Citation Envoyé par php.net
    Note: Cette fonction ne fonctionne pas avec les fichiers distants, car le fichier utilisé doit être accessible sur le système de fichiers local.
    Est-ce que ça pourrait avoir un rapport avec ton problème ?

    Sinon tu peux tester qu'il n'y a pas d'erreur avant d'entrer dans le foreach :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    $files = glob("*.*");
    if (!$files)
    {
      echo 'ERREUR sur GLOB' ;
    }
    else
    {
      foreach ($files as $filename) {
        echo "$filename occupe " . filesize($filename) . " octets\n";
      }
    }
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    224
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 224
    Par défaut
    bonjour Celira et merci de ton message.

    Non, j'avais vu ça, ça n'est pas mon cas.

    D'alleurs, dans ce petit code de test, j'ai simplifié en désignant les fichiers situés dans le même répertoire que la page qui contient le code.

    Ca m'étonne que ça ne marche pas car j'ai un Glob qui fonctionne dans une autre page / autre site / autre hébergeur.

    Merci.

    Francois
    ------------------------------------
    J'ai ajouté tes qqes lignes de code et j'ai eu naturellement le message d'erreur que tu as fourni.

    Le Glob() ne fournit pas la liste des fichiers présents dans le répertoire.

    Pourquoi?

    Francois
    ------------------------------------
    Je viens de trouver ça:
    Cette fonction n'est pas disponible sur quelques systèmes (e.g. vieux Sun OS).

    Je ne suis pas très loin de croire que c'est mon problème.

    Une idée?

    Francois
    ------------------------------------
    Question subsidiaire:
    Par quoi pourrais je remplacer la fonction glob()?

    Par avance merci.

    Francois

  4. #4
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Par défaut
    Si la fonction n'existait pas, le message d'erreur serait totalement différent (typiquement : Call to undefined function glob).
    Par contre, ce résultat peut s'expliquer par :
    • la fonction glob échoue, auquel cas elle ne renvoie pas un tableau (donc le foreach naturellement échoue ensuite avec le message d'erreur que vous avez obtenu) mais FALSE. Le code donné par Celira permet donc de traiter ce résultat en conséquence
    • Free est un cas particulier : si vous faites ici-même des recherches vous verriez qu'il a été question qu'elle soit "désactivée". En tout cas, si c'est toujours d'actualité le code source de PHP a été patché car ce n'est pas une fonction réellement désactivée (on trouverait cette information, le cas échéant, dans le phpinfo à la ligne disable_functions)

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    224
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 224
    Par défaut
    bonjour et merci de ta réponse.

    J'ai bien ajouté le code de Celira et le message d'erreur est bien sorti.

    Simplement, ce Glob() cherche à faire la liste des fichiers situés dans le même répertorie que la page où il se trouve; naturellement, il y a qqes fichiers (3 exactement).

    Comme tu le dis, la fonction est présente.

    Alors, pourquoi ce scenario aussi simplet ne fonctionne t il pas?

    Quel pb peut-il y avoir (Chmod, par exemple)?

    Merci encore de ton aide.

    Francois

Discussions similaires

  1. [Tableaux] remote_host ne fonctionne pas
    Par kynri dans le forum Langage
    Réponses: 2
    Dernier message: 06/10/2007, 11h45
  2. [Tableaux] is_dir() ne fonctionne pas
    Par pierrot10 dans le forum Langage
    Réponses: 1
    Dernier message: 20/06/2007, 17h12
  3. Des tableaux qui ne fonctionnent pas ?
    Par kevinf dans le forum Balisage (X)HTML et validation W3C
    Réponses: 4
    Dernier message: 18/12/2006, 20h22
  4. [Tableaux] empty ne fonctionne pas
    Par zakuza dans le forum Langage
    Réponses: 22
    Dernier message: 27/07/2006, 19h19
  5. [Tableaux] $_ENV ne fonctionne pas ? ? ?
    Par Yann1974 dans le forum Langage
    Réponses: 12
    Dernier message: 17/07/2006, 10h17

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo