Forenindex » Programmierung/Entwicklung » PHP und MySQL » Verzeichnisnamen ausgeben

Verzeichnisnamen ausgeben

Anonym
Beiträge gesamt: 22827

24. Apr 2003, 17:45
Bewertung:

gelesen: 1392

Beitrag als Lesezeichen
Hallo Leute

Kann mir jemand bitte helfen?

Ich möchte einfach alle Verzeichnisnamen die in einem bestimmten Verzeichnis sind ausgeben.

Wie mache ich sowas?

Vielen Dank für Eure Hilfe.

gruss Nick

Verzeichnisnamen ausgeben

Miro Dietiker
Beiträge gesamt: 699

24. Apr 2003, 18:59
Bewertung:

gelesen: 1392

Beitrag als Lesezeichen
Grundlegende Infos sind unter den folgenden Befehlen erhältlich.
$h = opendir($pfad) // Handle für Verzeichnis holen
readdir($h) // Lese nächste Datei aus Verzeichnis
closedir$h() // Schliesse Verzeichnishandle

Kleines Beispiel:
<?PHP
$path = '/path/to/files'
if ($handle = opendir($path))
{
echo "Directory handle: ".$handle."<BR>\n";
echo "Content:<BR>\n";

/* This is the correct way to loop over the directory. */
while (false !== ($file = readdir($handle)))
{
echo $file."<BR>\n";
if(is_dir($path.'/'.$file))
{ echo "Dir:".$file."<BR>\n"; }
else if(is_file($path.'/'.$file))
{ echo "File:".$file."<BR>\n"; }
else
{ echo "Link:".$file."<BR>\n"; }
}
?>

Zur Prüfung der Art der Files die zurückkommen nützen (siehe oben):
is_file($name)
is_dir($name)
is_link($name)

Dabei muss der Name incl. Pfad sein!

GrEeZ: Miro Dietiker

Verzeichnisnamen ausgeben

Anonym
Beiträge gesamt: 22827

25. Apr 2003, 22:42
Bewertung:

gelesen: 1392

Beitrag als Lesezeichen
Hallo Miro

Vielen Dank für das Beispiel. :-)
Doch ich habe noch eine Frage: Auf diese Art wird das . und .. Verzeichnis auch ausgegeben. Wie kann ich dies unterdrücken?

Kannst du mit bitte nochmals helfen?

Besten Dank!

Gruss omar

Verzeichnisnamen ausgeben

Miro Dietiker
Beiträge gesamt: 699

25. Apr 2003, 23:51
Bewertung:

gelesen: 1392

Beitrag als Lesezeichen
Einfach die Variable ausschliessen, falls es die Werte "." oder ".."
sind!

<?PHP
$path = '/path/to/files'
if ($handle = opendir($path))
{
echo "Directory handle: ".$handle."<BR>\n";
echo "Content:<BR>\n";

/* This is the correct way to loop over the directory. */
while (false !== ($file = readdir($handle)))
{
echo $file."<BR>\n";
if(is_dir($path.'/'.$file))
{
if(($file!='.')&&($file!='..'))
{ echo "Dir:".$file."<BR>\n"; }
}
else if(is_file($path.'/'.$file))
{ echo "File:".$file."<BR>\n"; }
else
{ echo "Link:".$file."<BR>\n"; }
}
?>

GrEeZ: Miro Dietiker

Verzeichnisnamen ausgeben

nick
Beiträge gesamt: 8

28. Apr 2003, 10:05
Bewertung:

gelesen: 1392

Beitrag als Lesezeichen
Hallo

Habe noch ein Problem.
Und zwar funktioniert das auf meinem Test Server (Win2000 mit Apache) doch auf dem externen Server funktioniert das nicht. Ich bekomme folgende Fehlermeldung:

Warning: opendir() [function.opendir]: SAFE MODE Restriction in effect. The script whose uid is 10254 is not allowed to access /usr/local/plesk/apache/vhosts/server.com/httpdocs/public owned by uid 0

Was muss ich tun, damit das funktioniert?

Vielen Dank für Eure Hilfe.

gruss Nick

Verzeichnisnamen ausgeben

jmraemer
Beiträge gesamt: 48

28. Apr 2003, 14:50
Bewertung:

gelesen: 1392

Beitrag als Lesezeichen
Hi!

Sagt der Server doch: Der Safe Mode ist an. Eine Moeglichkeit waere es ihn auszuschalten. Allerdings kann es auch sein, dass er sich einfach nur an der UID des Webservers stoert. Dann wuerde es reichen, die betroffene Datei (/das Verzeichnis) dem Webserveruser (wohl UID 10254) zu geben. Sollte als root mit 'chown <name des Webserverusers> <Datei>' gehen. Wenn es ein Verzeichnis ist: chown -r <name...

hth

Jan-Martin

Verzeichnisnamen ausgeben

Miro Dietiker
Beiträge gesamt: 699

28. Apr 2003, 22:00
Bewertung:

gelesen: 1392

Beitrag als Lesezeichen
Unter Umständen kann der Safemode so konfiguriert sein, dass nur
Unterordner des Scriptordners mit opendir geöffnet werden können.

Schliesslich kannst Du so oder so nichts machen und musst Dich mit
diesem Problem an deinen Provider wenden!
Die werden wissen um was es geht und eine Lösung parat haben, und
sonst wäre das ein trauriges Bild.

GrEeZ: Miro Dietiker