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 :

Comment contourner la fonction glob()


Sujet :

Langage PHP

  1. #1
    Débutant  
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 096
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 096
    Points : 944
    Points
    944
    Par défaut Comment contourner la fonction glob()
    Bonjour a tous,

    J'utilise un framework qui coince avec la fonction glob().

    J'ai ce message d'erreur
    Warning (2): glob() has been disabled for security reasons [CORE/Cake/basics.php, line 490]
    Dans l'hypotès ou mon hébergeur me dit qu'il peuvent ou veulent rien faire pouractiver cette fonction, que puis-je faire?

    Y-a-t-il une fonction qui peut la remplacer?

    Quelles sont les alternative qui viennent à moi?

    Voici le code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    while ($search = array_shift($cache)) {
    	$results = glob($search);
    	if ($results !== false) {
    		$files = array_merge($files, $results);
    	}
    }
    Merci
    Il ne suffit pas de tout savoir. Vouloir et persévérer, c'est déjà presque tout!

  2. #2
    Membre éprouvé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2012
    Messages
    631
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2012
    Messages : 631
    Points : 1 220
    Points
    1 220
    Par défaut
    bonjour,
    avec la classe DirectoryIterator, tu peux manipuler des fichiers, des répertoires avec les méthodes de cette classe
    DirectoryIterator

  3. #3
    Débutant  
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 096
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 096
    Points : 944
    Points
    944
    Par défaut
    Je te remercie mais je n'arrive pas a trouver une équivalence pour remplacer glob()
    J'ai regarde la définition de glob
    glob() recherche tous les chemins qui vérifient le masque pattern, en suivant les règles utilisées par la fonction glob() de la libc, qui sont les mêmes que celles utilisées par le Shell en général
    Mais quesce que ca veut dire exactement "cherche tous les chemins qui vlrfie le masque.."

    Si je reprnds ma problématique:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    while ($search = array_shift($cache)) {
    // Dabs $search, il y a la premier élément du array ¨cache
     
    // il met dans $results "le chemin vérifier par le masque
    	$results = glob($search); // Ici je ne comprends...
    // Si result n'est pas false
    	if ($results !== false) {
    // Continue
    		$files = array_merge($files, $results);
    	}
    }
    Il ne suffit pas de tout savoir. Vouloir et persévérer, c'est déjà presque tout!

  4. #4
    Expert éminent sénior

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 380
    Points : 10 410
    Points
    10 410
    Par défaut
    Conjointement à DirectoryIterator tu pourrais utiliser la classe RegexIterator ce qui pourrait donner une syntaxe comme celle-ci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $files = new RegexIterator(new DirectoryIterator($dossier),$match);
    Cela à l'avantage d'utiliser les expressions régulières standard PCRE pour $match plutôt que celles utilisées par le Shell avec la fonction glob.
    L'objectif de faire une recherche ciblée (avec $match) dans un répertoire est le même mais les moyens sont différents
    et cette ligne de code ne pourra pas être directement équivalente à la fonction glob puisque $match se construit différemment. Donc c'est le bloc de code dans son ensemble qu'il faut reconsidérer et pour cela il faut savoir le contenu de $search. Donnes des exemples de ce que retourne echo $search;

Discussions similaires

  1. Réponses: 3
    Dernier message: 06/08/2009, 17h09
  2. Réponses: 14
    Dernier message: 15/01/2004, 01h15
  3. [VB6] Comment faire une fonction qui renvoie 2 résultats
    Par tazarine dans le forum VB 6 et antérieur
    Réponses: 10
    Dernier message: 15/01/2004, 00h13
  4. Réponses: 11
    Dernier message: 22/12/2003, 21h06
  5. Comment chronométrer une fonction
    Par 323 dans le forum Pascal
    Réponses: 3
    Dernier message: 19/03/2003, 20h24

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