Problem mit filemtime und array

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

  • Problem mit filemtime und array

    Hallo zusammen,

    ich muss von mehreren Dateien das Änderungsdatum auslesen, dies möchte ich mit filemtime tun. Leider funktioniert dies nicht, wenn dies in einer foreach Schleife durchführen will. Ohne Array und ohne Schleife erhalte ich eine korrekte Ausgabe von filemtime.
    Alle Dateien haben auch Linux-Ebene 0777 Rechte und der Pfad mit Dateiname wird im Durchlauf auch korrekt ausgegeben (durch echo $file) - aber filemtime ist eben ohne Funktion.

    PHP-Code:
    $filepath "/www/lamp1/portal";
     
    // funktioniert nicht
    $files[] = $filepath."/upload/data-1.csv";
    $files[] = $filepath."/upload/data-2.csv";
    $files[] = $filepath."/upload/data-3.csv";
    foreach(
    $files as $file)
    {
    echo 
    $file."<br>";
    echo 
    filemtime($file);
    echo 
    "<br>";

     
     
    // funktioniert
    echo filemtime("/www/lamp1/portal/upload/data-1.csv"); 
    Habt ihr eine Idee, was hier nicht korrekt sein könnte ? Google lieferte mir leider keine verwertbaren Ergebnisse.

    Danke, Gruss
    Michael

  • #2
    Was meinst du mit "ohne Funktion"? Was liefert filemtime() zurück?

    Kommentar


    • #3
      Hallo,

      mit "ohne Funktion" meinte ich: funktioniert nicht.

      filemtime liefert das Datum und Zeit der letzten Änderung als timestamp zurück.

      PHP-Code:
      echo filemtime("/www/lamp1/portal/upload/data-1.csv"); 
      ...liefert dann zB 1244807570 als Wert zurück.
      Im Schleifendurchlauf erhalte ich jedoch keine Ausgabe.

      Die Ausgabe vom Script sieht so aus:
      Code:
      /www/lamp1/portal/upload/data-1.csv
      
      /www/lamp1/portal/upload/data-2.csv
      
      /www/lamp1/portal/upload/data-3.csv
      
      1244807570
      Gruss
      Michael

      Kommentar


      • #4
        "Keine Ausgabe" heißt dann wohl, die Funktion gibt FALSE zurück.
        Hast du dein error_reporting aufgedreht?
        Schon mit clearstatcache() in der Schleife versucht?
        Oder stat()?

        Kommentar


        • #5
          Hi,

          clearstatcache und stat habe ich mal eingebaut. Leider hab ich kein Zugriff auf die PHP Config, daher kann ich am Error-Reporting nichts ändern. Es erfolgt nämlich keine Ausgabe an den Client, sondern nur im Logfile auf dem Server werden die Fehler angezeigt (darauf hab ich aber Zugriff).

          aktuelles Script:
          PHP-Code:
          error_reporting(E_ALL);
           
          $filepath "/www/lamp1/portal";
           
          // funktioniert nicht
          $files[] = $filepath."/upload/data-1.csv";
          $files[] = $filepath."/upload/data-2.csv";
          $files[] = $filepath."/upload/data-3.csv";
          foreach(
          $files as $file)
          {
          clearstatcache();

          $st stat($file);

          echo 
          $file.": ".$st[9]."<br>";

          // funktioniert
          clearstatcache();
          $st stat($filepath."/upload/data-1.csv");
          echo 
          $filepath."/upload/data-1.csv: ".$st[9]."<br>";
           
          ?> 
          Auszug Logfile auf Server:
          Code:
          [Sat Nov 21 10:31:54 2009] [error] [client x.x.x.x] PHP Warning:  stat() [<a href='function.stat'>function.stat</a>]: 
          stat failed for /www/lamp1/portal/upload/data-1.csv in /www/lamp1/portal/config/test5.php on line 15
          Zuletzt geändert von onemorenerd; 21.11.2009, 10:55.

          Kommentar


          • #6
            Ist das exakt das Script so wie du es laufen lässt? Das dürfte sich nicht so verhalten.

            Kommentar


            • #7
              ja, ist das vollständige script.
              Hast du noch eine Idee wie man ggf. den Fehler noch weiter eingrenzen könnte oder ggf. alternative Lösungswege um an das Änderungsdatum der Dateien zu kommen?

              Ich hab auch schon auf PHP.net nach Bugs für Version 5.2.5 gesucht (und andere Versionen), aber war nichts passendes dabei.

              Kommentar


              • #8
                Versuch mal das:
                PHP-Code:
                <?php

                error_reporting
                (E_ALL);
                ini_set('display_errors'1);
                header('Content-type: text/plain');

                $files[] = __FILE__;
                foreach (
                $files as $file) {
                    echo 
                $file .': 'filemtime($file) ."\n";
                }

                echo 
                __FILE__ .': 'filemtime(__FILE__);

                Kommentar

                Lädt...
                X