2012-08-07 8 views
11

Sto cercando di ottenere l'ultima data di modifica di tutti i file in una directory utilizzando PHP.Ottenere l'ultima data di modifica dei file nella directory utilizzando PHP

Sto usando questo:

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

foreach($dir as $file) sta tornando i file corretti, ma tutte le date di modifica stanno tornando come 0000-00-00 00:00:00, invece della data effettiva di modifica .

Quali modifiche devo apportare per ottenere questo funzionamento?

+0

è la funzione che restituisce un errore o falso? – FreudianSlip

+0

Come stai aprendo '$ dir' e il suo percorso è diverso da quello di dove è in esecuzione lo script? Probabilmente è necessario anteporre il percorso alla directory a '$ file' prima di chiamare' filemtime'. – drew010

+0

@ drew010 Sto impostando la directory come segue: '$ dir = glob ("/home/******/public_html/monthlymixup.com/mixups/april_2011/media/*/* ");' E il percorso della sceneggiatura è '/ home/******/public_html/monthlymixup.com/process.php'' Come dovrei anteporre la directory? – Nick

risposta

13

Controllare se il file $ var è in realtà punta a un file corretto

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ì, sto ottenendo, ad es. '/home/******/public_html/monthlymixup.com/mixups/april_2011/media/nick/_say boss man.mp3 modificato l'ultima volta il 23 febbraio 2012 11:26:32. 'Ora posso vedere che il problema è che la data è nel formato sbagliato per l'invio a una tabella MySQL, che era dove stavo leggendo il 01:00 00:00:00. Avrei dovuto includere queste informazioni! Sai come convertire "February 23 2012 11: 26: 32' a" 2012-02-23 11: 26: 32'? – Nick

+2

Prova questo: 'echo date (" Ymd G: i: s ", strtotime (" 23 febbraio 2012 11:26:32 "));' Per il tuo codice suppongo che diventerà 'date (" Ymd G: i: s ", strtotime ($ mod_date)); In alternativa, mentre si ottiene il filemtime() stesso si potrebbe fare' date ("Ymd G: i: s", filemtime ($ file)); – raidenace

+0

@Nick , Meglio usare l'oggetto 'DateTime' e il metodo' createFromFormat() 'invece di' strtotime() '. –

4

date("F d Y H:i:s.", false) è quello che stai ottenendo. vedi documentation di filemtime. Restituisce falso in caso di fallimento.

Problemi correlati