Öffnen eines Verzeichnis-Handles mit opendir()

Wir sind alle dumm *G*

Also er kann natürlich nicht einen Ordner auslesen der in einen anderen Ordner liegt.
Woher soll PHP wissen welcher Ordner das ist ;)

Also musst du noch den Ordner angeben in dem der andere Ordner drinne ist den du öffnen möchtest.
 
Emu-Emsen hat gesagt.:
eben leider nicht, es wird wieder gar nichts ausgegeben... :confused: Ich versteh das nicht...
Wo die Funktion readdir() auslesen soll wird doch mittels

Code:
$handle = opendir('../content/');
definiert.

readdir() liest Dateinamen im angegebenen Verzeichnis, also kann bzw. muss ich ja kein Verzeichnis angeben, was gelesen werden soll.
 
ja ober geordnetes verzeichniss , aber welches ? wie heisst es , wenn da 1900000 Ordner sind , in welchen Ordner ist dann content ? Selbst wenn da nur einer wäre würde es PHP nicht wissen.Das ist der Haken , ohne den Ordner geht da gar nix.

Alternative ist , alle ordner in diesen Verzeichniss auslesen und in jeden einzelnen reinschaun auch wenns dumm klingt , aber PHP macht nur das was du ihm sagst und wenn es nicht weiss wo sich der Ordner befindet wird da auch nix passieren.

Mache mal error report all an , dann wirst die Fehlermeldung sehen das PHP diesen Ordner nicht öffnen kann.

Abwärts ist das wieder was anderes , da weiss ja PHP in welchen Ordner es sich befindet und muss diesen nur schliessen.
 
Zuletzt bearbeitet:
@Fips

Ich glaube du hast da was falsch interpretiert. Er will nicht den Ordner "content" in seiner Ordnerstruktur suchen, sondern er will IM Ordner "content" ALLE Ordner auflisten. Und das Script ist an und für sich richtig!

@Emu-Emsen

Stell trotzdem mal error report all auf "on"! Vielleicht wird ja eine Warnung ausgegeben, die uns weiterhilft!
 
Kann es sein, dass Du dieses Skript in einem anderen Skript mit include einbindest?
Wenn dieses andere Skript dann in einem anderen Verzeichnis liegt, ist dieses andere Verzeichnis die Basis, von der eine Ebene höher gegangen wird.
Gib mal die Ergebnisse von file_exists("../content") und is_dir("../content") aus, um der Lösung etwas näher zu kommen.

Die Prüfung auf false inklusive Typprüfung ist richtig, da die Schleife sonst auch abbrechen würde, wenn ein Verzeichnis "0" (die Ziffer Null, nicht das Oh) heißt.
Doku readdir hat gesagt.:
Please note the fashion in which readdir()'s return value is checked in the examples below. We are explicitly testing whether the return value is identical to (equal to and of the same type as--see Comparison Operators for more information) FALSE since otherwise, any directory entry whose name evaluates to FALSE will stop the loop (e.g. a directory named "0").
Gruß hpvw
 
Nein, dieses Script wird nicht per include() woanders eingebunden, aber ich habe den Fehler gefunden.

So funktioniert es:

Code:
$verz = '../content';
$handle = opendir ($verz);

echo "<p>Verzeichnisse:</p>";

while ($file = readdir($handle))
{
      if ($file != "." && $file != ".." && is_dir($verz.'/'.$file))
      { 
           echo $file."<br />"; 
      }
}
closedir($handle);
Vielen Dank für eure Hilfe ;)
 
Zuletzt bearbeitet:
Hi,

Um sicherzu sein das es doch keine Rechteprobleme sind mach mal das:
PHP:
<?php
echo "<pre>";
print_r(scandir("../contents/"));
echo "</pre>";
?>

Was wird dann hier angezeigt?

Gruß Kevin

EDIT:
Ups, da gabs ja auch ne 2. Seite :p .
 
Mhm wieder was gelernt aber irgendwwie komm ich nicht dahinter wie es arbeitet.

Ordner die man ausliest sehen ja so aus

.
..
Ordner 1
Ordner 2
Ordner n
Datei 1
Datei 2
Datei n

Das müsste ja heissen das das verzeichniss content in einen Ordner liegt eigentlich oder seh ich das falsch ?
.
..
Ordner 1
Content
Ordner 2
Ordner n

Bitte da mal um Aufklärung da es doch etwas komisch ist :)

Also ich probiere das selbe , ich weiss ich habe einen Ordner Testi und in diesem Ordner ist der Ordner Klaus enthalten.

Der Quellcode dazu sieht so aus dann naja ist ja eigentlich der gleiche:

PHP:
<?php

$dir = "../Klaus";
$d = opendir($dir);

while($file = readdir($d)){
  if($file != "." && $file != ".." && is_dir($dir.'/'.$file)){
    echo $file;
  }
}

?>

Ah ich habs , Du liest quasi kein Obergeordnetes Verzeichniss aus , sondern gehst in erstmal 1 Verzeichniss zurück.Und öffnest dort dann den Ordner quasi den du suchst.

./ liest ja den Ordner aus indem du Dich eben befindest , bei ../ geht man einen Ordner weiter runter.
Naaaaa gut doch was gelernt :)
 
Zuletzt bearbeitet:
Zurück