2012-08-07 10 views
11

Próbuję uzyskać datę ostatniej modyfikacji wszystkich plików w katalogu przy użyciu PHP.Data ostatniej modyfikacji plików w katalogu przy użyciu PHP

używam to:

foreach($dir as $file) 
{ 
$mod_date=date("F d Y H:i:s.", filemtime($file)); 
} 

foreach($dir as $file) wraca odpowiednich plików, ale wszystkie z datami modyfikacji wracają jako 0000-00-00 00:00:00, zamiast rzeczywistej daty modyfikacji .

Jakie zmiany należy wprowadzić, aby to zadziałało?

+0

jest funkcja zwrócenie błędu czy fałsz? – FreudianSlip

+0

W jaki sposób otwierasz '$ dir' i czy jego ścieżka różni się od ścieżki skryptu? Prawdopodobnie będziesz musiał poprzedzić ścieżkę do katalogu do '$ file' przed wywołaniem' filemtime'. – drew010

+0

@ drew010 Ustawiam katalog w następujący sposób: '$ dir = glob ("/home/******/public_html/monthlymixup.com/mixups/april_2011/media/*/* ");' A ścieżka skryptu to '/ home/******/public_html/monthlymixup.com/process.php'' Jak powinienem dodać katalog? – Nick

Odpowiedz

13

Sprawdź, czy plik $ var jest faktycznie wskazując właściwy plik

foreach($dir as $file) 
{ 
    if(is_file($file)) 
    { 
    $mod_date=date("F d Y H:i:s.", filemtime($file)); 
    echo "<br>$file last modified on ". $mod_date; 
    } 
    else 
    { 
    echo "<br>$file is not a correct file"; 
    } 
} 
+0

tak, otrzymuję, np. '/home/******/public_html/monthlymixup.com/mixups/april_2011/media/nick/_say boss man.mp3 Ostatnia modyfikacja 23 lutego 2012 11:26:32. 'Teraz widzę, że chodzi o to, że data jest w niewłaściwym formacie do przesłania do tabeli MySQL, gdzie właśnie czytałem 0000-00-00 00:00:00. Powinienem podać te informacje! Czy wiesz, jak przekonwertować '23 lutego 2012 11: 26: 32' na' 2012-02-23 11: 26: 32'? – Nick

+2

Spróbuj tego: 'echo date (" Ymd G: i: s ", strtotime (" 23 lutego 2012 11:26:32 "));' Dla twojego kodu myślę, że stanie się on 'date (" Ymd G: i: s ", strtotime ($ mod_date));' Alternatywnie, podczas pobierania samego pliku filemtime() mógłbyś zrobić: 'date (" Ymd G: i: s ", filemtime (plik $));' – raidenace

+0

@Nick , Lepiej użyj obiektu 'DateTime' i' createFromFormat() 'zamiast' strtotime() '. –

4

date("F d Y H:i:s.", false) jest to, co otrzymujesz. patrz documentation z filemtime. Zwraca wartość false w przypadku niepowodzenia.

Powiązane problemy