Zum Inhalt springen

Empfohlene Beiträge

Geschrieben

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

Geschrieben

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

Geschrieben

@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).

Geschrieben

@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

  • 3 Wochen später...

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.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...