Tìm và xóa file thừa trong PHPBB3

Chủ nhật - 18/11/2007 08:51
Bài toán đặt ra: Làm sao xóa các file thừa & bù file thiếu trong hệ thống PHPBB3 mà hiện CSDL của PHPBB3 không thể phát hiện ra? Bạn hãy thử giải pháp này xem sao.
Đây là giải pháp của NEDKA ở vinabb

Ý tưởng là, phải so sánh filename của những file còn trong DB và những file có trong thư mục files/ là sẽ biết được những "file rác" có trong thư mục files/ (có trong files/ mà không có trong DB, nghĩa là không hề được sử dụng đến. Cái này do rất nhiều nguyên nhân mà nó có, ví dụ: thành viên upload file trong khi đang soạn dang dở, rồi bỏ không gửi ; cấp phép sai thư mục files, dẫn đến không thể xóa file trong thư mục vật lí...)

Đầu tiên là tạo danh sách những file có trong DB (đây là tất cả những file đang sử dụng - active). Tạo một file PHP như sau:
Code:
<?php

define('IN_PHPBB', true);
$phpbb_root_path = './';
$phpEx = substr(strrchr(__FILE__, '.'), 1);
include($phpbb_root_path . 'common.' . $phpEx);

// Start session management
$user->session_begin();
$auth->acl($user->data);
$user->setup();

$sql = 'SELECT physical_filename
   FROM ' . ATTACHMENTS_TABLE . '
   WHERE is_orphan = 0
   ORDER BY physical_filename ASC';
$result = $db->sql_query($sql);

while ($row = $db->sql_fetchrow($result))
{
      echo($row['physical_filename'] . '<br />');
}

?>

Upload lên host rồi chạy nó từ trình duyệt, copy tất cả kết quả xuất ra rồi save thành file FILE_DB.txt để trên máy.

Tiếp theo, tạo tiếp file php khác để xuất ra tất cả các file hiện có trong thư mục files/ (mà nhiều cái chắc chắn sẽ không còn trong DB - nghĩa là "file rác"). Mấu chốt là do các file đính kèm của phpBB sau khi upload đã không còn phần mở rộng (click từ trình duyệt nó sẽ hiểu nhầm là thư mục con - do không có đuôi tập tin đi kèm), do đó phải dùng hàm scandir - chỉ có trong PHP5 để hiện tên thực:
Code:
<?php

define('IN_PHPBB', true);
$phpbb_root_path = './';
$phpEx = substr(strrchr(__FILE__, '.'), 1);

$dir    = $phpbb_root_path . 'files/';
$files = scandir($dir);

foreach ($files as $files_list => $file_ary)
{
   printf($file_ary . '<br />');
}

?>

Upload lên host, chạy từ trình duyệt rồi copy kết quả thành file FILE_DIR.txt để trên máy.

Cuối cùng, dùng một phần mềm so sánh văn bản, như WinMerge để so sánh 2 file này, bên trái là file FILE_DB.txt, bên phải là file DB_DIR.txt:

WINMERGE.gif
 
KẾT QUẢ KHI SO SÁNH:
Nếu chỉ có bên phải, không có bên trái: nghĩa là những cái bên phải này là file rác không hề sử dụng tới, hãy lưu lại tên nó rồi dò tìm và xóa đi (xóa từ công cụ quản lý file trong hosting, qua FTP...).
Nếu chỉ có bên trái, không có bên phải: trường hợp này nghĩa là có lỗi, 1 file có trong DB (phần hồn) nhưng lại khộng có trong thư mục files (phần xác), thành ra nếu ai đó click vào link download của nó sẽ báo lỗi "Not found". Hãy tra tìm theo tên đó và upload lại.

Nguồn tin: Nedka@vinabb

Tổng số điểm của bài viết là: 0 trong 0 đánh giá

Click để đánh giá bài viết

  Ý kiến bạn đọc

Giấy phép sử dụng NukeViet

Bản dịch tiếng Việt của Giấy phép Công cộng GNU Người dịch Đặng Minh Tuấn Đây là bản dịch tiếng Việt không chính thức của Giấy phép Công cộng GNU. Bản dịch này không phải do Tổ chức Phần mềm Tự do ấn hành, và nó không quy định về mặt pháp lý các điều khoản cho các...

Thăm dò ý kiến

Lợi ích của phần mềm nguồn mở là gì?

Thống kê truy cập
  • Đang truy cập86
  • Máy chủ tìm kiếm1
  • Khách viếng thăm85
  • Hôm nay26,327
  • Tháng hiện tại876,356
  • Tổng lượt truy cập45,962,232
  • Thông báo phát hành NukeViet 4.3.06

    NukeViet 4.3.06 tiếp tục là bản tiếp theo của thế hệ NukeViet 4.3. Thêm chức năng gửi lại email kích hoạt tài khoản chờ duyệt, chức năng cấu hình CORS, tùy chọn chèn logo cho mỗi lần upload và hỗ trợ các nhà phát triển debug các câu lệnh SQL là những điểm mới đáng chú ý ở phiên bản này.
  • Một số tính năng mới của NukeViet 4.3.06

    Thêm chức năng gửi lại email kích hoạt tài khoản chờ duyệt, chức năng cấu hình CORS, tùy chọn chèn logo cho mỗi lần upload và hỗ trợ các nhà phát triển debug các câu lệnh SQL là những điểm mới đáng chú ý ở NukeViet 4.3.06
  • Đọc, hiểu đúng báo cáo của Google PageSpeed Insights

    PageSpeed Insights là công cụ của Google dành cho các nhà phát triển web giúp phân tích nội dung của trang web, sau đó tạo đề xuất nhằm giúp trang đó hoạt động nhanh hơn. Tuy nhiên đọc và hiểu các báo cáo này như thế nào? Ứng dụng đến đâu... lại là chuyện mà chúng ta phải bàn!
  • Thông báo phát hành NukeViet 4.3.05

    NukeViet 4.3.05 tiếp tục là bản tiếp theo của thế hệ NukeViet 4.3. Gỡ bỏ các nội dung liên quan đến Google Plus và tính năng kiểm duyệt thông tin chỉnh sửa của thành viên là điểm nổi bật tại phiên bản này.
  • Một số cập nhật của phiên bản NukeViet 4.3.05

    Cùng điểm qua một số thay đổi tại phiên bản 4.3.05 của dòng NukeViet 4.x
  • Firefox Send triển khai cho tất cả mọi người

    Bản cập nhật mới nhất của trình duyệt Firefox cung cấp cho người dùng công cụ Firefox Send, giúp họ có thể di chuyển tập tin được mã hóa đầu cuối.
  • Google Tag Manager là gì và triển khai Google Tag như thế nào?

    Mới đầu, Google Tag Manager có lẽ là một công cụ khó hiểu và khó dùng với đại đa số mọi người. Tuy nhiên, một khi đã tiếp xúc và sử dụng công cụ này thì bạn sẽ thấy nó thực sự tuyệt vời, tiện dụng cũng như đầy hữu ích khi Quản trị Website đấy.
 
Bạn đã không sử dụng Site, Bấm vào đây để duy trì trạng thái đăng nhập. Thời gian chờ: 60 giây