2012-08-07 19 views
11

Estoy tratando de obtener la última fecha de modificación de todos los archivos en un directorio usando PHP.Obteniendo la última fecha de modificación de archivos en el directorio usando PHP

estoy usando esto:

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

foreach($dir as $file) está volviendo los archivos correctos, pero todas las fechas de modificación están volviendo tan 0000-00-00 00:00:00, en lugar de la fecha real de modificación .

¿Qué cambios debo hacer para que funcione?

+0

Es la función que devuelve un error o falsa? – FreudianSlip

+0

¿Cómo está abriendo '$ dir' y su ruta de acceso es diferente a la de donde se ejecuta la secuencia de comandos? Probablemente necesites anteponer la ruta al directorio a '$ file' antes de llamar a' filemtime'. – drew010

+0

@ drew010 Estoy configurando el directorio de la siguiente manera: '$ dir = glob ("/home/******/public_html/monthlymixup.com/mixups/april_2011/media/*/* ");' Y el camino de la secuencia de comandos es '/ home/******/public_html/monthlymixup.com/process.php'' ¿Cómo precederé al directorio? – Nick

Respuesta

13

Comprobar si el archivo $ var apunta realmente a un archivo correcto

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

sí, estoy recibiendo, p. '/home/******/public_html/monthlymixup.com/mixups/april_2011/media/nick/_say boss man.mp3 Última modificación el 23 de febrero de 2012 11:26:32. 'Ahora puedo ver que el problema es que la fecha está en el formato incorrecto para enviarla a una tabla MySQL, que era donde estaba leyendo el 0000-00-00 00:00:00. Debería haber incluido esta información! ¿Sabes cómo convertir '23 de febrero de 2012 11: 26: 32' a' 2012-02-23 11: 26: 32'? – Nick

+2

Pruebe esto: 'echo date (" Ymd G: i: s ", strtotime (" 23 de febrero de 2012 11:26:32 "));' Para su código supongo que se convertirá en 'date (" Ymd G: i: s ", strtotime ($ mod_date));' O bien, al obtener el filemtime() en sí mismo podría hacer 'date (" Ymd G: i: s ", filemtime ($ file));' – raidenace

+0

@Nick , Mejor utilizar el objeto 'DateTime' y el método' createFromFormat() 'en lugar de' strtotime() '. –

4

date("F d Y H:i:s.", false) es lo que recibirá. ver documentation de filemtime. Devuelve falso en caso de error.

Cuestiones relacionadas