is_dir funktioniert nicht richtig
Errraddicator
- php
0 Tom
Hidioho
Ich habe für meine Seite ein Script geschrieben was alle Dateien und Verzeichnisse in einem gegebene auflistet.
Bei mir auffer Arbeit klappt das wunderbar.
Lade ich die Datei auf den echten Server wo meine Seite liegt, klappts nicht.
Dort stellt er mir die Ordner als Dateien dar und nicht als Ordner.
Keine Ahnung warum das bei mir auffem lokalen Rechner klappt und auf dem echten nicht.
Hier mal der Quellcode:
[PHP]
<!-- ... -->
<?php
/*-- this function prints the given directory --*/
function listDirectory($dir, $caption)
{
echo "<h2>$caption</h2>\r\n";
echo "<ul>\r\n";
/*-- print all files --*/
while($direntry = $dir->read() )
{
if($direntry != "." && $direntry != "..")
{
/*-- check if current entry is a file --*/
$entrypath = $dir->path . "\" . $direntry;
$isdir = is_dir($entrypath);
if(!$isdir)
{
echo "<li><a href="$entrypath">$direntry</a></li>\r\n";
}
}
}
/*-- rewin directory --*/
$dir->rewind();
/*-- print all subdirectories --*/
while($direntry = $dir->read() )
{
if($direntry != "." && $direntry != "..")
{
/*-- check if current entry is a dir or file --*/
$entrypath = $dir->path . "\" . $direntry;
$isdir = is_dir($entrypath);
if($isdir)
{
$subdir = dir($entrypath);
listDirectory($subdir, $direntry);
}
}
}
echo "</ul>\r\n";
$dir->close();
return 0;
}
/*-- open & list data-directory --*/
$datapath = "data";
$datadir = dir($datapath);
listDirectory($datadir, "");
?>
<!-- ... -->
[/PHP]
Weiß einer von Euch was falsch läuft?
Danke im voraus
Patrick
Hello,
while($direntry = $dir->read() )
Das ist schonmal falsch.
Eine Datei namens '0' würde die Schleife vorzeitig beenden.
while(($direntry = $dir->read())!== false )
ist besser.
{
if($direntry != "." && $direntry != "..")
Und hier kann man gleich fragen
if(is_file($direntry) or is_link($direntry))
{
/*-- check if current entry is a file --*/
$entrypath = $dir->path . "\" . $direntry;
Auch unter Windows musst Du hier in PHP '/' als Verzeichnistrenner verwenden
Harzliche Grüße vom Berg
http://www.annerschbarrich.de
Tom
Hello,
while($direntry = $dir->read() )
Das ist schonmal falsch.
Eine Datei namens '0' würde die Schleife vorzeitig beenden.while(($direntry = $dir->read())!== false )
ist besser.
Ist nich "0" das gleiche wie false?
/*-- check if current entry is a file --*/
$entrypath = $dir->path . "\" . $direntry;Auch unter Windows musst Du hier in PHP '/' als Verzeichnistrenner verwenden
*LOL* @ Fehler.
Boah wie schlecht von mir.
Aber in Flüchtigskeitsfehlern war ich schon immer der Größte *ROFL*
Harzliche Grüße vom Berg
http://www.annerschbarrich.deTom
Danke noch mal ;)
hi,
Ist nich "0" das gleiche wie false?
Für PHP ist es das "gleiche", aber nicht das selbe.
Und eben deshalb sagte Tom dir ja,
Eine Datei namens '0' würde die Schleife vorzeitig beenden.
Und durch den Vergleich auch auf _Typengleicheit_ verhindert du, dass dein Script hier im Zweifelsfalle zu früh beendet wird.
gruß,
wahsaga
Hello,
Für PHP ist es das "gleiche", aber nicht das selbe.
Das Gleiche aber nicht dasselbe.
*scnr*
Harzliche Grüße vom Berg
http://www.annerschbarrich.de
Tom
Hello,
while($direntry = $dir->read() )
Das ist schonmal falsch.
Eine Datei namens '0' würde die Schleife vorzeitig beenden.while(($direntry = $dir->read())!== false )
ist besser.
Ist nich "0" das gleiche wie false?
Nein. Seit PHP 4 nicht mehr.
Da wurden die Identitätsoperatoren eingeführt
http://de3.php.net/manual/de/language.operators.comparison.php
Harzliche Grüße vom Berg
http://www.annerschbarrich.de
Tom