w00zla: Probleme mit "is_dir" !!

Hallo Leute,
ich bastel gerade an einem kleinen Datenbank-Proggi und hab dort ein Problem mit der "is_dir"-Funktion !
Es ist so:
Ich habe eine Funktion geschrieben die mir aus bestimmten Ordnern nur die Dateien herauszieht, um dann jeweils das Datum der letzen Datei-Änderung abzufragen und den größten Wert abzuspeichern, um mir wiederrum damit das Datum der letzten Aktualisierung übergeben zu können.
Die Unterverzeichnisse will ich natürlich nicht prüfen, aber ein Verzeichniss (von mehreren) erkennt "is_dir" nicht als solches !!

Die Verzeichnissstruktur ist wie folgt:

/
/tbox
/tbox/data
/tbox/img
/tbox/incs

Die ausführende Datei liegt im "tbox"-Ordner und soll seinen eigenen, den Stammordner und den "inc" ordner überprüfen !
Hier nun mein Code:

$scriptfolders = array("./", "incs/", "../");

function GetLatestScriptEdit() {
  global $scriptfolders;
  $act = 0;
  /* Anzahl der zu prüfenden Ordner */
  $arrcount = count($scriptfolders);
  for ($i=0; $i<$arrcount; $i++) {
    $actdir = $scriptfolders[$i];
    $dir = opendir($actdir);
    if (!$dir) {
      log2file("'GetLatestScriptEdit' konnte Verzeichnis '$actdir' nicht öffnen !");
      return false;
    }
    while ($file = readdir($dir)) {
      if (!is_dir($file)) {  /* Auf Verzeichnisse prüfen (diese nicht mit einbeziehen) */
        switch ($file) {
          case ".":
            break;
          case "..":
            break;
          default:
            $timearray[$act] = filemtime($scriptfolders[$i] . $file);
            $act++;
            log2file("'GetLatestScriptEdit' --> " . $scriptfolders[$i] . $file . " !");  /* ZU TESTZWECKEN */

}
      }
    }
    closedir($dir);
  }
  /* Absteigend sortieren -> $timearray[0] enthält den größten(=ältesten) Wert */
  rsort($timearray);
  $latestedit = date("d.m.y H:i",$timearray[0]);
  return $latestedit;
}

Mein Logfile (von "log2file()") verrät mir das die "filemtime()"
für "../tbox" GANZ ZUM SCHLUSS auch berechnet wird (trotz "if (!is_dir($file))") !!

Bitte helft mir, ich blicks einfach nicht, da sonstige Verzeichnisse (data, img) ja auch nicht geprüft werden !

MfG,
   w00zla

  1. Moin W00zla,

    mache doch mal bitte folgendes (einfügen):

    while ($file = readdir($dir)) {
          if (!is_dir($file)) {  /* Auf Verzeichnisse prüfen (diese nicht mit einbeziehen) */

    echo $file .<"br">;

    switch ($file) {
              case ".":
                break;

    regds
    Mike

    1. Hello,

      while ($file = readdir($dir)) {

      if (!is_dir($dir."/".$file)) {  /* Auf Verzeichnisse prüfen (diese nicht mit einbeziehen) */

      switch ($file) {
                case ".":
                  break;

      Liebe Grüße aus http://www.braunschweig.de

      Tom

      --
      Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
      1. Moin!

        Hello,

        while ($file = readdir($dir)) {
               if (!is_dir($dir."/".$file)) {  /* Auf Verzeichnisse prüfen (diese nicht mit einbeziehen) */

        switch ($file) {
                  case ".":
                    break;

        War das jetzt hilfreich?

        Es löst das Problem, aber wird es wirklich helfen, das Problem zu verstehen und anhand der von Magic Mike vorgeschlagenen Änderung zu erkennen, was Debugging ist?

        Es hat schon seinen Grund, warum hier im Forum Komplett- oder Fertiglösungen nicht gerne gesehen werden. Weil der Fragesteller daraus nichts lernt.

        - Sven Rautenberg

        --
        Die SelfHTML-Developer sagen Dankeschön für aktuell 21205,05 Euro Spendengelder!
        1. Moin Sven,

          Es hat schon seinen Grund, warum hier im Forum Komplett- oder Fertiglösungen nicht gerne gesehen werden. Weil der Fragesteller daraus nichts lernt.

          Indeed, ich erfahre das jeden Tag. Ich arbeite bei DHL Express in
          der IT Abteilung. Leider fehlt es den Leuten im Support die Vorgehensweise zu Fehleranalyse zu verstehen.

          Wenn sie mit einem Problem zu mir kommen, zeige ich ihnen nicht wie
          das Problem gelöst wird, sondern wie es eingegrenzt wird.

          Dann klappt es auch beim nächsten Mal ( und mit dem Nachbarn )

          regds
          Mike

        2. Hallo nochmal,
          ja, das war sehr hilfreich (es geht alles) !

          Es löst das Problem, aber wird es wirklich helfen, das Problem zu verstehen und anhand der von Magic Mike vorgeschlagenen Änderung zu erkennen, was Debugging ist?

          Ich habe das Problem mit den Verzeichnissangaben mittlerweile verstanden (learning by doing), und debuggen tu ich schon immer (siehe log2file()-Funktion) !

          Danke an Magic Mike für den Tipp, und natürlich an Tom für die Lösung !
          Und an Sven Rautenberg: sieh das nicht so eng, ich bin jetzt heilfroh das es geht ;-)

          MfG,
             w00zla