[php] probleme Invalid argument foreach() - fonction en local mais pas online

bonsoir j’ai besoin d’aide pour un blem qui me depasse un peu

je me suis fait une petite zone admin avec creation/modification des pages et pour simplifier la modification online (on peu pas se souvenir de tout) j’ai ajouté un script qui genere dans un textarea la liste des pages (filtré en *.php) disponible

donc avec easyphp sa fonctionne niquel mais online je tombe sur un
Warning: Invalid argument supplied for foreach()

j’en comprends pas vraiment le sens et surtout pourquoi il fonctionne en local
je precise le fichier et placé a la racine du site


<?php
// Création du tableau qui va contenir les fichiers et dossiers
$files = array();

// Ouverture du répetoire courant
// Pour le changer utiliser chdir() avant opendir()
$handle = opendir(".");

// Parcours des fichiers et dossiers du répertoire courant
while($file = readdir($handle)) {
    if($file != "." && $file != "..") {
        $files[] = $file;
    }
}

// Fermeture du répertoire courant
closedir($handle);

// Tri du tableaunat
sort($files);

// Affichage des fichiers et dossiers triés
foreach(glob("*.php") as $fichier) {
echo "$fichier occupe " . filesize($fichier) . " octets\n";
//    echo $fichier . "\n";
}
?>

la 2eme chose je n’arrive pas a ajouter au filtre un 2eme type de fichier genre *.js
comment faire merci de l’aide apporté

C’est normal dans ton foreach, vire le glob et mets $files
Si tu veux tester l’extension comme ça, tu dois faire une vérification des quatre derniers caractères du nom de fichier (=".php").
Ou alors, en utilisant glob, tu mets tout simplement, $files = glob(’*.php’) avant ta boucle.

Pour le coup du deuxième filtre, tu peux plus utiliser glob, faudra que tu testes les derniers caractères de chaque fichier.

Ton problème vient du fait que glob(’*.php’) rate, et renvoie false, ou autre chose qu’un tableau.

N’oublie pas sinon que cela va aussi dépendre des droits que php a sur le serveur : s’il n’a pas droit de lire le dossier, alors il ne pourra jamais lister quoi que ce soit.

desoler reponse tardive j’etais passé a uatre chose entre temp merci de vos reponses

Mandarounet > j’ai essayé avec les modif mais je n’y arrive pas
sa pourrait pas venir sinon coté server windows/linux j’ai lu sa quelque part mais j’ai pas tout compris mon site est sur un compte free

Sans-Nom >
"dépendre des droits que php a sur le serveur " si c’etait le cas il ne devrait pas plutot me revoyer un message d’erreur de droit ou de lecture ou a la limite une page blanche plutot qu’une erreur Invalid argument? mais c’est vrai que sa my fait pensé puisque sous easy-php sa fonctionne bien

je vais cherché merci :wink:
sinon j’ai trouvé un autre code qui lui fonctionne trés bien mais ce n’est pas du tout le meme syntaxe donc pas simple de decortiquer
je ne suis pas un crac :wink:

En tout cas, ton problème vient de la fonction glob :slight_smile:

Ensuite, ça peut dépendre du serveur (easyphp = Windows, où en général SYSTEM est admin, ou autre)

oui je pense aussi mais pourquoi… c’est encore un peu dur pour moi
mais dans tout les cas comme j’ai dit au dessus j’ai trouvé un autre code qui lui fonctionne trés bien meme si j’en comprends pas encore toute le subtilité pour l’instant
puis façon c’etait juste destiné a une aide visuelle(memoire) donc ce n’est pas bien important

merci :slight_smile:

Sinon pour vérifier l’extension d’un fichier tu peux faire un truk tout bête :

$ext_file=substr($filename,strrpos($filename,"."));