opendir

opendir - PHP - Programmation

Marsh Posté le 30-06-2007 à 19:41:10    

Bonjour, je bloque sur un truc tout con que vous connaissez tous : opendir
 
Citation : Pas de titre
 
$open = opendir($rep);
while ($file = readdir($open)){
   if ($file != "." && $file!="index.php" && $file!=".." && $file!="dl.php" && $file!="style.css" ) {
      if (is_dir($file)){
         $ListFiles[$i]=$file;
         $i++;
      }
   }
}
 
 
alors voila ca fonctionne parfaitement lorsque par exemple
 
$rep = '.';
 
mais les fonctions is_file et is_dir ne fonctionnent plus du tout lorsque
 
$rep = 'video';
ou encore
$rep = 'video/sous dossier';
 
 
J'attends vos conseils ;)

Reply

Marsh Posté le 30-06-2007 à 19:41:10   

Reply

Marsh Posté le 30-06-2007 à 19:59:09    

./video
./video/sous dossier

 

A essayer


Message édité par WiiDS le 30-06-2007 à 19:59:17

---------------
"I can cry like Roger. It's just a shame I can't play like him" - Andy Murray, 2010
Reply

Marsh Posté le 30-06-2007 à 20:09:14    

Ca ne fonctionne toujours pas.

Reply

Marsh Posté le 30-06-2007 à 20:36:49    

./video/
./video/sous dossier/
 
[:dakans]


---------------
"I can cry like Roger. It's just a shame I can't play like him" - Andy Murray, 2010
Reply

Marsh Posté le 30-06-2007 à 20:44:30    

Fonctionne toujours pas.

Reply

Marsh Posté le 30-06-2007 à 21:03:24    

Pulsar- a écrit :

Bonjour, je bloque sur un truc tout con que vous connaissez tous : opendir
 
Citation : Pas de titre
 
$open = opendir($rep);
while ($file = readdir($open)){
   if ($file != "." && $file!="index.php" && $file!=".." && $file!="dl.php" && $file!="style.css" ) {
      if (is_dir($file)){
         $ListFiles[$i]=$file;
         $i++;
      }
   }
}
 
 
alors voila ca fonctionne parfaitement lorsque par exemple
 
$rep = '.';
 
mais les fonctions is_file et is_dir ne fonctionnent plus du tout lorsque
 
$rep = 'video';
ou encore
$rep = 'video/sous dossier';
 
 
J'attends vos conseils ;)


 
Est-ce que ton serveur Apache a accès au répertoire "video" (droits, répertoire bien au bon endroit (à la racine de "DocumentRoot" ) etc...)
Pour vérifier, tu demandes l'url "http://<mon_serveur>/video" et tu regardes ce que ça fait...


---------------
Vous ne pouvez pas apporter la prospérité au pauvre en la retirant au riche.
Reply

Marsh Posté le 30-06-2007 à 21:45:02    

Oui bien sur que j'ai l'accès. Il n'y a aucune erreur. C'est un serveur free.
 
J'arrete pas de tenter des trucs different et là j'ai une évolution :
 
$open = opendir("drole" );
while ($file = readdir($open)){
if (is_dir($file)){
echo 'dir'.$file.'<br>';
}
else if (is_file($file)){
echo 'file'.$file.'<br>';
}
}
 
Dans mon repertoire 'drole' il y a plus de 20 vidéos en .mpg, .avi et .wmv , un répértoire nommé 'test' ainsi que les fichiers suivant :
 
addsql.php
dl.php
index.php
style.css
 
Et voici apres execution du script le résultat affiché par le code vu plus haut :
 
dir.
dir..
filestyle.css
filedl.php
fileindex.php
 
Gros mystère dans l'affaire; incohérence totale (le addsql.php et toutes les vidéos ne sont pas compatibilisée, le repertoire 'test' non plus).

Reply

Marsh Posté le 30-06-2007 à 22:03:52    

Je viens de creer un tout nouvel ftp totalement vierge encore sur l'hebergeur free

 

Voivi le contenu du ftp : (1 dossier contenant 4 fichiers et un fichier)

 

[DIR]drole
   >addsql.php
   >dl.php
   >index.php
   >style.css
[FILE]index.php

 


Voici le code de la page index.php placé à la racine:

 
Code :
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
  2. <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" >
  3.         <head>
  4.                 <title>ftp</title>
  5.    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
  6.         </head>
  7.         <body>
  8. <h1>FTP</h1>
  9. <?php
  10. $open = opendir("./drole" );
  11. while ($file = readdir($open)){  
  12.  if ($file != ".." ){
  13.   if (is_dir($file)){
  14.   echo 'dir'.$file.'<br>';
  15.   }
  16.   else if (is_file($file)){
  17.   echo 'file'.$file.'<br>';
  18.   }
  19.  }
  20. }
  21. ?>
  22. </body>
  23. </html>
 

et voyez vous meme le résultat :

 

http://photonpulsar.free.fr/

 



Message édité par Pulsar- le 30-06-2007 à 22:05:33
Reply

Marsh Posté le 30-06-2007 à 23:21:04    

Mets ton serveur Free en php 5 ca améliora p'têtre les choses :/


---------------
"I can cry like Roger. It's just a shame I can't play like him" - Andy Murray, 2010
Reply

Marsh Posté le 30-06-2007 à 23:32:22    

Si passer en php5 signifie renommer index.php en index.php5 alors le resultat est encore pire puisque Voici la reponse du serveur :
 
FTP
dir.

Reply

Marsh Posté le 30-06-2007 à 23:32:22   

Reply

Marsh Posté le 30-06-2007 à 23:40:36    

Pulsar- a écrit :

Si passer en php5 signifie renommer index.php en index.php5 alors le resultat est encore pire puisque Voici la reponse du serveur :
 
FTP
dir.


Non mais c'est quoi cette nouvelle génération d'handicapé qui ne savent pas se servir de google ? [:dakans]²²²²²
 
http://www.google.fr/search?hl=fr& [...] ogle&meta=


---------------
"I can cry like Roger. It's just a shame I can't play like him" - Andy Murray, 2010
Reply

Marsh Posté le 30-06-2007 à 23:53:43    

Oui, ba je suis débutant aussi; faut m'escuser; mais il parait qu'en mettant une extension en .php5 ca fonctionne également.
Enfin bref, en metant le serveur free ne php5 ca donne le même résultat.

Reply

Marsh Posté le 01-07-2007 à 14:19:36    

Bon ne voyant aucune solution de la part des internaute sur 2 forums et après avoir essayé toutes les combinaisons et possibilité durant plus de 2 heures j'ai abandonné et je contourne le problème en passant par ce code :

Code :
  1. $open = opendir("./drole" );
  2. while ($file = readdir($open)){  
  3.  if ($file != ".." ){
  4.   $pos = strpos($file,'.');
  5.   if ($pos === false) {
  6.    echo 'dir '.$file.'<br>';
  7.   }
  8.   else {
  9.    if ($pos == (strlen($file)-4)){
  10.     echo 'file '.$file.'<br>';
  11.    }
  12.   }
  13.  }
  14. }
 

Si vous trouvez quelque chose d'équivalent et moins lourd en cout de ressource machine je suis preneur.


Message édité par Pulsar- le 01-07-2007 à 14:19:44
Reply

Marsh Posté le 01-07-2007 à 14:21:49    

Code :
  1. <?php
  2. // Notez que !== n'existait pas avant 4.0.0-RC2
  3.  
  4. if ($handle = opendir('/chemin/vers/fichiers')) {
  5.    echo "Directory handle: $handle\n";
  6.    echo "Files:\n";
  7.  
  8.    /* Ceci est la façon correcte de traverser un dossier. */
  9.    while (false !== ($file = readdir($handle))) {
  10.        echo "$file\n";
  11.    }
  12.  
  13.    /* Ceci est la MAUVAISE façon de traverser un dossier. */
  14.    while ($file = readdir($handle)) {
  15.        echo "$file\n";
  16.    }
  17.  
  18.    closedir($handle);
  19. }
  20. ?>


 
Tout droit tiré de la doc PHP : Ta facon de traverser les dossiers est mauvaise.


---------------
"I can cry like Roger. It's just a shame I can't play like him" - Andy Murray, 2010
Reply

Marsh Posté le 01-07-2007 à 14:48:03    

Bien trouvé mais ... ca ne fonctionne toujours pas quelle que soit la façon de traverser les dossiers !

Reply

Marsh Posté le 01-07-2007 à 21:38:12    

Pulsar- a écrit :

Bien trouvé mais ... ca ne fonctionne toujours pas quelle que soit la façon de traverser les dossiers !


C'est en accumulant ce genre d'erreurs qu'on finit par avoir un script complètement foireux. Cela dit ton cas m'intéresse, je vais tester ca sur mon Free :jap:


---------------
"I can cry like Roger. It's just a shame I can't play like him" - Andy Murray, 2010
Reply

Marsh Posté le 01-07-2007 à 23:05:29    

Ba là il ne peut y avoir d'accumulation puisque le code est vraiment leger; de plus tous les tutoriaux que j'ai vu utilisent la méthode que j'avais employé et après finalement après les 2 codes donnent le meme resultat. Donc je ne pense pas qu'on puisse parler d'erreur.
 
Enfin bref, j'ai tappé ma propre fonction qui permet de reconnaitre un dossier d'un fichier avec du code un peu plus élaboré que ce que j'ai posté ci-dessous.
 
Pour moi ce opendir restera un mystère mais pas un obstacle infranchissable.
 
Et oui, teste ca sur ton Free pour confirmer ou infirmer le phénomène qu'on a là. ;)

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed