Rabber Geschrieben 10. März 2006 Geschrieben 10. März 2006 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 /*-- 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 Zitieren
~tine~ Geschrieben 10. März 2006 Geschrieben 10. März 2006 Wenn es sich bei dem "echten" Server nicht um deinen eigenen handelt, könnte es daran liegen, dass "Ordnereigentümer" und "Skriptnutzer" nicht identisch sind. Läuft PHP auf dem Server zusätzlich im safe_mode, gibt die Funktion is_dir immer FALSE zurück, was bei deinem Skript dann dazu führt, dass auch die Ordner als Datei angezeigt werden. tine Zitieren
etreu Geschrieben 10. März 2006 Geschrieben 10. März 2006 @tine Hast du dafür eine Quelle? In der Referenz steht keine Einschränkung die Funktion im safe_mode. Ich vermute mal, dass dein Live-Server ein Linuxrechner ist, oder? Du benutzt aber Windowspfade. Ein Tip: Mach aus "\\" einfach "/" (funktioniert auch unter Windows) oder nehme die entsprechende Konstante (DIRECTORY_SEPARATOR) (ab 4.3.0-rc2). Zitieren
~tine~ Geschrieben 10. März 2006 Geschrieben 10. März 2006 @Enrico T. Angaben sind unter anderem zu finden unter is_dir in den Kommentaren und unter safe_mode. Bei letzterem steht zwar lediglich Wenn safe_mode aktiv ist, sind verschiedene PHP-Funktionen privilegiert oder eingeschränkt. Zumeist gilt die safe_mode Einschränkung, dass auf eine Datei oder ein Verzeichnis nur eingewirkt werden darf, wenn die Datei oder das Verzeichnis denselben Eigentümer hat wie das Script. Im Einzelnen: Alle Dateifunktionen einschließlich include() und require() können nur noch mit lokalen Dateien arbeiten, die denselben Eigentümer (uid) haben wie der Eigentümer des Scriptes. Da is_dir aber zu den Dateifunktionen gehört, fällt es auch unter die Einschränkungen. tine Zitieren
Rabber Geschrieben 28. März 2006 Autor Geschrieben 28. März 2006 Ich habe jetzt ein ganz seltsames Phänomen. Er listet mir ein Verzeichnis zweimal an. Einmal als Datei und einmal als Verzeichnis. Das Ergebnis seht Ihr hier: http://www.russell-ducati-records.de/downloads.php Ich habe keine Ahnung warum das passiert? Weiß jemand von Euch vielleicht woran sowas liegen kann? (Quellcode siehe oben ) Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.