is_dir() funzt nicht so richtig...

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

  • is_dir() funzt nicht so richtig...

    Hallo.
    Ich habe folgenden Code:

    PHP-Code:
    $handle=opendir('..'); 
        while (
    $file readdir ($handle)) { 
            if (
    $file != "." && $file != ".." && $file != "images" && $file != "admin" && is_dir($file)) { 
    eval (
    "\$dirs .= \"".gettemplate("template_choose_rows")."\";"); 
            } 
        }
        
    closedir($handle); 
        eval(
    "dooutput(\"".gettemplate("template_choose")."\");"); 
    In dem vorigen Verzeichnis sind 3 Ordner, die er anzeigen müsste.
    Er zeigt nur einen an.
    Wenn ich die Funktion rausnehme, werden alle Dateien korrekt angezeigt (auch .php und so)
    Aber mit is_dir() eben nicht. Weiß jemand, wieso?
    MfG Oli

  • #2
    Hab das gleiche Problem gehabt...lad die Datei einfach mal auf nen Linuxserver und wart ab ob es dort geht, so hab ichs gelöst

    Windows und Webserver sind und bleiben Widersprüche
    Welch triste Epoche, in der es leichter ist, ein Atom zu zertrümmern als ein Vorurteil!
    (Albert Einstein)

    Kommentar


    • #3
      Könnte es eventuell sein das Du die Funktionsbeschreibung nicht komplett gelesen hast ... insbesondere den Part über die Relative Pfadangabe??
      carpe noctem

      [color=blue]Bitte keine Fragen per EMail ... im Forum haben alle was davon ... und ich beantworte EMail-Fragen von Foren-Mitgliedern in der Regel eh nicht![/color]
      [color=red]Hinweis: Ich bin weder Mitglied noch Angestellter von ebiz-consult! Alles was ich hier von mir gebe tue ich in eigener Verantwortung![/color]

      Kommentar


      • #4
        könnte eher sein, dass ich sie nicht verstanden habe..
        Kannst du mir das vielleicht mal eben erklären?

        Kommentar


        • #5
          wie erklären?
          besser als es in der büchern ausführlich erklärt wird?
          nein besser als professionelle autoren bin ich leider nicht..
          sorry
          Visit my php blog!

          Kommentar


          • #6
            ich habs nur von php.net gelesen und da steht nicht gerade viel

            Kommentar


            • #7
              "If filename is a relative filename, it will be checked relative to the current working directory"

              Dein opendir geht auf das übergeordnete Verzeichnis ( .. ) ... is_dir() prüft aber im aktuellen Verzeichniss ...

              "(is_dir) Returns TRUE if the filename exists and is a directory" ergo: Verzeichnis existiert nicht ... da nicht im übergeordneten, sondern im aktuellen Verzeichnis gesucht wird ... Rückgabe also: FALSE ...
              carpe noctem

              [color=blue]Bitte keine Fragen per EMail ... im Forum haben alle was davon ... und ich beantworte EMail-Fragen von Foren-Mitgliedern in der Regel eh nicht![/color]
              [color=red]Hinweis: Ich bin weder Mitglied noch Angestellter von ebiz-consult! Alles was ich hier von mir gebe tue ich in eigener Verantwortung![/color]

              Kommentar


              • #8
                also ich erklärs mal so: Im vorherigen Verzeichnis(..) sind 4 Ordner:
                admin, images, templates, test1

                admin, images fallen raus, weil ich sie verbiete, templates wird angezeigt, der Rest nicht. Wenn ich aber $file != images aus der if Abfrage rausnehme, wird images auch angezeigt. test1 aber nie!
                Also ist er doch in dem vorigen Verzeichnis...

                Kommentar


                • #9
                  mach mal spaßeshalber:
                  PHP-Code:
                  $handle=opendir('..');
                  echo 
                  'Arbeitsverzeichnis ist: '.getcwd().'<p />';
                  while (
                  $file readdir ($handle))
                    if (
                  is_dir($file))
                      echo 
                  getcwd().'/'.$file.' ist ein Verzeichnis<br />';
                    elseif (
                  file_exists($file))
                      echo 
                  getcwd().'/'.$file.' ist eine Datei<br />';
                    else
                      echo 
                  getcwd().'/'.$file.' ist irgendwas komisches, das ich nicht bestimmen kann<br />';
                  rewinddir($handle);
                  echo 
                  '<hr />';
                  echo 
                  'Arbeitsverzeichnis ist: '.getcwd().'<p />';
                  while (
                  $file readdir ($handle))
                    if (
                  is_dir('../'.$file))
                      echo 
                  getcwd().'/../'.$file.' ist ein Verzeichnis<br />';
                    elseif (
                  file_exists('../'.$file))
                      echo 
                  getcwd().'/../'.$file.' ist eine Datei<br />';
                    else
                      echo 
                  getcwd().'/../'.$file.' ist irgendwas komisches, das ich nicht bestimmen kann<br />';
                  closedir($handle); 
                  Ich denke, also bin ich. - Einige sind trotzdem...

                  Kommentar


                  • #10
                    Jo, zeigt alles an, beim Ordner templates -- Ist ein Verzeichnis, beim Ordner test1 -- Irgend etwas komisches, was ich nicht bestimmen kann.

                    Also sind die dirs irgendwie unterschiedlich...

                    Kommentar


                    • #11
                      in beiden fällen?
                      Ich denke, also bin ich. - Einige sind trotzdem...

                      Kommentar


                      • #12
                        hm, irgendwie komisch, also er zeigt die Dateien aus dem vorhergehenden Verzeichnis an, aber schreibt als Pfad das relative hin.

                        Unten schreibt er das relative Verzeichnis, dann ../ dann den Dateinamen als Pfad hin...

                        [edit]

                        Nein, stimmt, unten zeigt er die Verzeichnisse richtig an...
                        also test1 ist auch eines

                        Kommentar


                        • #13
                          poste doch bitte einfach mal die beiden zeilen, in denen test1 vorkommt
                          EDIT:
                          siehst wohl, und genau das ist das, was goth dir sagen wollte mit verzeichnis, das du durchsuchst und verzeichnis, dass du prüfst...
                          Ich denke, also bin ich. - Einige sind trotzdem...

                          Kommentar


                          • #14
                            oben:

                            C:\wampp2\htdocs\Boards\testen\wbboard\admin/test1 ist irgendwas komisches, das ich nicht bestimmen kann


                            unten:

                            C:\wampp2\htdocs\Boards\testen\wbboard\admin/../test1 ist ein Verzeichnis

                            Kommentar


                            • #15
                              dann bist du im verzeichnis C:\wampp2\htdocs\Boards\testen\wbboard\admin

                              und durchsuchst C:\wampp2\htdocs\Boards\testen\wbboard\admin/.., also
                              C:\wampp2\htdocs\Boards\testen\wbboard

                              und es gibt nen ordner
                              C:\wampp2\htdocs\Boards\testen\wbboard\test1,
                              aber keinen ordner C:\wampp2\htdocs\Boards\testen\wbboard\admin\test

                              richtig?
                              Ich denke, also bin ich. - Einige sind trotzdem...

                              Kommentar

                              Lädt...
                              X