PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : opendir und Verzeichnisrecht



Rothy
18-07-2004, 18:20
Hi Leute!

Ich bastel an einem Modul, welches mir grundsätzlich mal aus einem bestimmten Verzeichnis den Inhalt ausliest und dann zwischen Verzeichnis und Datei unterscheidet.

Mein Problem liegt darin:
Wenn ich das public_html Verzeichnis angebe, funktioniert alles einwandfrei, sobald ich aber ein Unterverzeichnis (z.B. modules) verwende, kann es mir nur noch . und .. auslesen.

Kann mir bitte jemand sagen warum?

Hier das Script:

<?php
if (eregi("index.php",$PHP_SELF)) {
Header("Location: index.php");
die();
}
$modname = "Download";
global $prefix, $dbi, $admin, $user;

/*Pfad zum Verzeichnis:*/
$dir = opendir("/Pfad/public_html/download/");
while($file=readdir($dir)){

/*Alternativ:
if ($dir = @opendir("/home/e/endlichfreitag.de/public_html/")) {
while (($file = readdir($dir)) !== false) { */

if(is_dir($file)){

echo "Bei $file handelt es sich um ein Verzeichnis";
$check = sql_query("select * from $prefix"._download_verzeichnis." where dvname='$file'", $dbi);
$checkit = sql_num_rows($check);
if($checkit==0){
echo"nicht vorhanden";

}
if($checkit!==0){
}
}
if(is_file($file)){

echo "Bei $file handelt es sich um eine Datei";
$size = filesize($file);
echo "Größe der Datei $file: $size";
}

else {}
clearstatcache();
}

closedir($dir);
?>

Gaert
18-07-2004, 18:43
Hallo,

Ich verstehe nicht ganz was du meinst... poste bitte mal die Fehlermeldung.

Gruß,

Gaert

undefined
18-07-2004, 18:49
Hi Leute! ]Wenn ich das public_html Verzeichnis angebe, funktioniert alles einwandfrei, sobald ich aber ein Unterverzeichnis (z.B. modules) verwende, kann es mir nur noch . und .. auslesen.

Wenn dein Verzeichnis Leer ist dürfte das auch Korrekt sein ;)

Rothy
18-07-2004, 19:38
Tja das wäre richtig, wenns leer ist, ist es aber nicht.
Und es wird keine Fehlermeldung ausgegeben.
Er scheint das alles nur nicht zu verarbeiten.
Ich habe mal in else was reingeschrieben. Und das zeigt er an.
Im public_html macht ers, in nem Unterverzeichnis sind Ordner für ihn nicht Ordner und Dateien keine Dateien.
Sagt das jemanden was?

Ich habe mit den rechten auch schon rumprobiert bis zu 7777. Nichts.

Rothy
18-07-2004, 21:43
Ich denke mein Hauptproblem war, dass ich nicht richtig beachtet habe, was is_dir als Antwort zurückgibt.

Ich musste bei mir nur:

if(is_file($file))

durch:

$testv=is_file("/Pfad/$file");
if($testv)

ersetzen. Und schon gehts.

Achja Global usw war drin, weil des ja nicht alles ist, ich hab bloss alles rausgelöscht, damits hier nicht zu lang wird... DANKE!

undefined
19-07-2004, 08:28
Bei solchen Angelegenheiten ist es immer besser mit mit realpath() und Kontrollstrukturen zu Arbeiten. Das minimiert die Fehler Quellen ;)


$Ordner= realpath("bla");
if ( is_dir( $Ordner ) && is_readable( $Ordner ) ) {
$handler = opendir( $Ordner );
while ( $dirs = readdir( $handler) )
{
if ( ! preg_match("/^\.{1,2}/", $dirs ) )
echo $dirs;
}
}