Nhiều năm trước, khi các webserver còn hạn chế, mỗi khi website gặp lỗi trong code, đoạn code lỗi sẽ được hiển thị trực tiếp trên trang, khiến ai truy cập cũng thấy. Điều này giúp quản trị viên nhanh chóng xác định file và dòng code bị lỗi, nhưng cũng là cơ hội để các hacker xấu tính khai thác như một lỗ hổng bảo mật.
Vì lý do này, các nhà cung cấp hosting và thiết lập mặc định của webserver ngày nay đã ẩn đi thông tin lỗi để tăng cường bảo mật. Thay vì hiển thị lỗi cụ thể, website thường chỉ hiện màn hình trắng – hay còn gọi là lỗi trắng trang.
Nhiều lần, mình nhận được câu hỏi như: "Ơ, website mình bị trắng trang, làm sao để sửa?" Thực sự, chỉ với câu đó thì mình cũng không thể sửa lỗi, vì lỗi trắng trang hoặc lỗi 500 Internal Server có rất nhiều nguyên nhân khác nhau. Tuy nhiên, chúng đều bắt nguồn từ thiết lập webserver (như .htaccess với Apache, .conf với NGINX) hoặc từ code trên website.
Giải pháp:
Để sửa lỗi, chúng ta cần biết rõ nguyên nhân. Một khi đã biết nguyên nhân, dù là người mới hay chuyên gia, bạn đều có thể tự khắc phục bằng cách đọc file log ghi lại lỗi. File log sẽ cung cấp thông tin chính xác về vấn đề.
Đối với lỗi trắng trang:
100% lỗi trắng trang xuất phát từ code, như gọi một hàm không tồn tại, sai cú pháp, hoặc viết thừa dấu. Để sửa lỗi, bạn chỉ cần mở file error log và xem. File này thường có tên là error_log hoặc error.log, nằm trong thư mục /public_html với Shared Host. Nếu dùng server riêng (VPS/Dedicated), bạn cần tìm trong file cấu hình domain của mình để thấy đường dẫn đến file log. Nếu không tìm ra, hãy liên hệ bộ phận kỹ thuật để được hỗ trợ.
Nội dung file log thường có định dạng như sau:...
Có hai loại lỗi PHP phổ biến:
- PHP Warning – Đây là cảnh báo ở mức độ nhẹ, không gây gián đoạn hoạt động của website và thường bị ẩn đi mặc định. Nếu bạn bật tùy chọn WP_DEBUG trong file wp-config.php thành TRUE, các cảnh báo này sẽ hiển thị trên website.
- PHP Fatal Error – Đây là lỗi nghiêm trọng, khiến PHP không thể tiếp tục hoạt động và là nguyên nhân chính dẫn đến lỗi trắng trang.
Các lỗi trong file log được ghi theo từng dòng, mỗi dòng tương ứng với một lần báo lỗi. Một lượt truy cập gây lỗi sẽ hiển thị một dòng, và lỗi có thể lặp lại nhiều lần. Khi đọc log, bạn nên bắt đầu từ trên xuống dưới, tức là từ lỗi cũ đến lỗi mới, hoặc dựa vào dấu thời gian ở đầu mỗi dòng.
Trong mỗi dòng log, bạn sẽ biết lỗi gì đã xảy ra và file nào gặp lỗi. Nếu muốn tìm hiểu thêm về lỗi, bạn có thể tra cứu trên Google, nhưng điều quan trọng là xác định file bị lỗi. Nếu lỗi từ một plugin, bạn chỉ cần tắt plugin đó bằng cách đổi tên thư mục plugin.
Nếu không có file error_log, hãy mở file wp-config.php và tìm:...
Sửa false thành true và lưu lại.
Đối với lỗi 500:
Lỗi 500 thường bắt nguồn từ việc cấu hình sai trên Webserver, chẳng hạn như lỗi cú pháp trong các file cấu hình khiến Webserver không thể khởi động lại. Điều này có nghĩa là trình duyệt của bạn không nhận được tín hiệu từ Webserver.
Nếu bạn sử dụng Shared Host, lỗi này thường do hai nguyên nhân: cú pháp trong file .htaccess bị sai hoặc quyền CHMOD của file này không đúng. Bạn có thể khắc phục bằng cách xóa nội dung file .htaccess và truy cập lại. Nếu lỗi vẫn còn, hãy đặt lại quyền CHMOD của file .htaccess về 755, 644, hoặc 744.
Nếu bạn dùng server riêng (VPS, Dedicated), hãy mở file log của webserver. File log của Apache nằm trong thư mục /var/log/httpd và của NGINX nằm trong /var/log/nginx. Xem xét để tìm file cấu hình nào gặp lỗi, lỗi này thường xuất hiện khi bạn thay đổi các file cấu hình VirtualHost.
Lời kết:
Người ta thường nói "hãy cho cần câu thay vì cho cá". Khi bạn biết cách đọc file log, bạn đã có "cần câu" để tự sửa mọi lỗi, thay vì chạy đi hỏi mà không nhận được câu trả lời thỏa đáng.
Nhớ rằng, mọi lỗi trên website đều được ghi lại trong file log, bao gồm lỗi 500, lỗi trắng trang, lỗi không upload được ảnh,… Hãy xem file log để xác định và khắc phục lỗi. Mình cũng phải dựa vào file log mới sửa được.
Hy vọng bài viết này sẽ hữu ích cho bạn!