2012-08-07 30 views
11

Tôi đang cố gắng lấy ngày sửa đổi cuối cùng của tất cả các tệp trong một thư mục bằng cách sử dụng PHP.Nhận ngày sửa đổi cuối cùng của các tệp trong thư mục bằng cách sử dụng PHP

Tôi đang sử dụng này:

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

foreach($dir as $file) đang trở lại các tập tin chính xác, nhưng tất cả các ngày sửa đổi đang trở lại như 0000-00-00 00:00:00, thay vì ngày sửa đổi thực tế .

Tôi cần thực hiện những thay đổi nào để làm việc này?

+0

là chức năng trả lại một lỗi hay sai? – FreudianSlip

+0

Bạn mở '$ dir' như thế nào và đường dẫn của nó có khác với nơi tập lệnh đang chạy không? Bạn có thể cần phải thêm đường dẫn vào thư mục tới '$ file' trước khi gọi' filemtime'. – drew010

+0

@ drew010 Tôi đang thiết lập thư mục như sau: '$ dir = glob ("/home/******/public_html/monthlymixup.com/mixups/april_2011/media/*/* ");' Và đường dẫn của tập lệnh là '/ home/******/public_html/monthlymixup.com/process.php'' Tôi sẽ làm thế nào để thêm vào thư mục? – Nick

Trả lời

13

Kiểm tra nếu tập tin $ var là thực sự trỏ đến một tập tin chính xác

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

vâng, tôi nhận được, ví dụ: '/home/******/public_html/monthlymixup.com/mixups/april_2011/media/nick/_say boss man.mp3 sửa đổi lần cuối vào ngày 23 tháng 2 năm 2012 11:26:32. 'Bây giờ tôi có thể thấy rằng vấn đề là ngày có định dạng sai cho việc đệ trình lên một bảng MySQL, đó là nơi tôi đang đọc 0000-00-00 00:00:00. Tôi nên có thông tin này! Bạn có biết cách tôi chuyển đổi 'Ngày 23 tháng 2 năm 2012 11: 26: 32' thành '2012-02-23 11: 26: 32' không? – Nick

+2

Hãy thử điều này: 'echo date (" Ymd G: i: s ", strtotime (" February 23 2012 11:26:32 "));' Đối với mã của bạn, tôi đoán nó sẽ trở thành 'date (" Ymd G: i: s ", strtotime ($ mod_date));' Cách khác, trong khi nhận được filemtime() chính bạn có thể làm 'ngày (" Ymd G: i: s ", filemtime ($ file)); ' – raidenace

+0

@Nick , Tốt hơn sử dụng đối tượng 'DateTime' và' createFromFormat() 'thay vì' strtotime() '. –

4

date("F d Y H:i:s.", false) là những gì bạn đang nhận được. xem documentation trong số filemtime. Nó trả về sai lầm về thất bại.

Các vấn đề liên quan