Verzeichnis wird nicht vollständig ausgelesen

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Verzeichnis wird nicht vollständig ausgelesen

    Moin allerseits

    Ich arbeite an einem Bildmanager, mit dem man Bilder für bestimmte Artikel/News/etc. auf einer Seite über ein Formular hochladen kann.
    Dabei werden die Bilder je nachdem für was man gerade einen Artikel schreibt, oder ob es News sind, die Bilder über den Manager in entsprechende Unterordner auf dem Server hochgeladen (um eine gewisse Ordnung zu haben).
    Über den Manager kann man sich Ordnerstruktur, sowie die Dateien im aktuellen Ordner anzeigen lassen. Die Struktur der Ordner geht nach /images/TYPE/ID/
    Wird ein neuer Artikel erstellt (läuft über MySQL-Datenbank) und ein Bild für diesen Artikel hochgeladen, wird automatisch im entsprechenden TYPE Ordner ein Unterordner mit der ID des Artikels angelegt. Die Ordner haben alle die selben Zugriffsrechte über CHMOD.


    Das Problem ist nun folgendes:
    Beim auslesen des aktuellen Ordners werden einige Unterordner sowohl über den Befehl [COLOR=green]dir()[/COLOR] als auch [COLOR=green]opendir()[/COLOR] nicht erkannt/angezeigt.
    Das Problem tritt beim auslesen der TYPE-Ordner auf. Mehrere ID-Ordner fehlen. Die ID-Ordner wurden wie gesagt alle über ein Script erstellt, ihre Rechte mit CHMOD auch alle gleich.
    Ich bezweifele irgendwie das es sich hierbei um ein Codeproblem handelt.
    Auch trat der witzige Effekt auf, das wenn ich mir einmal mit [COLOR=green]readdir()[/COLOR] über Echo den Inhalt ausgeben lasse, und danach noch einmal, das beim ersten Echo nur ein Teil der Unterordner, beim zweiten Echo ein ganz anderer Teil der Unterordner angezeigt wird.


    PHP-Code:
    # $page_dir enthält den zu öffnenden Ordnernamen (z.B. "guides/clao/" ) 

    if(is_dir("../test/website/images/".$page_dir))
    {
        
    $read_dir opendir("../test/website/images/".$page_dir);
    }
    else 
    $admin_status "Error: Folder does not exist";
    # Wenn man an dieser Stelle bereits mit readdir() einsetzt, fehlen die Unterordner, d.h. werden nicht aufgelistet.

    // Get Directory-Listing
    if(strpos($read_dir_name,"images/..") != FALSE)
    {
        
    $read_dir opendir("../test/website/images/");
    }
    // Define File-Filter
    $page_filter_false preg_replace("/[0-9A-Za-z_]/i","",$page_filter);
    if(
    $page_filter_false == '')
    {
        
    $folder_array = array();
        
    $image_array = array();
        
    rewinddir($read_dir);
        while(
    $file = @readdir($read_dir))
        {
            
    // Get File/Directory Names
            
    if($file != "." && $file != ".." && is_dir("../test/website/images/".$page_dir.$file))
            {
                
    $folder_array[] = $file;
            }
            else
            {
                if(
    $page_filter != '' && strstr(strtolower($file),strtolower($page_filter)) == FALSE$page_ok 0;
                elseif(
    $page_filter != ''$page_ok 1;
                else 
    $page_ok 1;
                
    # Für jedes Bild wird beim hochladen ein Thumbnail mit NAME_thumb erstellt 
                
    if($file != "." && $file != ".." && $file != "index.htm" && !strpos($file,"_thumb.") && $page_ok == 1)
                {
                    
    $image_array[] = $file;
                }
            }
        }
        
    closedir($read_dir);

    # [...] Mehr Code hiernach, aber hierfür wohl nicht relevant. 

    Noch als Zusatzinfo:
    Die Ordner werden (falls sie nicht schon existieren) mit folgendem Befehl erstellt

    PHP-Code:
    mkdir("website/images/".$page_dir,0755); 

    Schonmal vielen Dank im Vorraus für jegliche produktive Hilfe.
    Zuletzt geändert von Jochen_H; 10.11.2005, 20:58.

  • #2
    Versuch mal clearstatcache.

    Kommentar


    • #3
      clearstatcache bringt leider kein sichtbarer Effekt.

      Kommentar


      • #4
        Original geschrieben von Jochen_H
        clearstatcache bringt leider kein sichtbarer Effekt.
        Also Clearstatcache() in der ersten Zeile des Skripts? Nicht hintendran.
        Was für eine Plattform ist das? Windows oder Linux?
        Wenn Linux, kommst Du an die Kommandozeile? Gib mal ein konkretes Beispiel mit Ordnern, die nicht angezeigt werden, und den Output eines "ls -lisa" im Verzeichnis, das die Ordner enthält.

        Kommentar


        • #5
          Auf dem Server läuft Linux, ja. Ich hab den Provider kontaktiert um den Ordner mal zu überprüfen, jedoch kann der keine Probleme feststellen.
          Das einzige was er mir sagen konnte, war das sie vor kurzem "einige Dinge geändert haben" - was genau, konnte er mir aber nicht verraten.

          Ein konkretes Beispiel mit den Ordnern sieht wie folgt aus:
          Als Beispiel der Unterordner guides/clao
          Er beinhaltet 6 weitere Unterordner, mit den Namen 0,1,2,3,5,6 (von IDs der Artikel).

          Anzeigen tut das Script nur die Ordner 2,5.
          Kurios ist, wenn ich den [COLOR=darkblue]readdir[/COLOR] Befehl zweimal über den selben Ordner jage und mir das Ergebnis ausgeben lasse, so steht beim ersten Durchlauf Ordner 2,5 dort, beim zweiten Durchlauf (kein Refresh, im Script zweimal aufrufen) wird Ordner 1 angegeben.

          Kommentar

          Lädt...
          X