Lỗi trang trắng… Hãy đọc log file!

Trở lại nhiều năm về trước, khi mà web server còn hạn chế tính năng thì khi website gặp lỗi hoặc do hacker cố tình dò lỗi thì các lỗi sẽ được hiển thị ngay trang web mà ai cũng có thể thấy được nó. Đối với các dòng lỗi code, người quản trị website sẽ biết được website đang bị lỗi gì, từ đó tiến hành khắc phục lỗi. Nhưng đối với hacker, kẻ đó sẽ sử dụng các dòng lỗi code như một loại lỗ hổng (thường gọi là “bug”) và sử dụng nó để từ đó chiếm quyền điều khiển toàn bộ site.

Vì vậy, đó là lý do vì sao các nhà cung cấp hosting hiện nay, đặc biệt tạiGreenhost luôn thiết lập mặc định ẩn đoạn báo lỗi, thay vào đó lỗi sẽ ghi vào log file trên host để tăng tính bảo mật cho website, thay vì cứ để các dòng lỗi xuất hiện vừa mất thẩm mỹ, vừa gây khó khăn thêm cho hacker. Và khi ẩn dòng lỗi code thì website truy cập thường sẽ xuất hiện “trang trắng”.

Và quý khách đã từng gặp các câu hỏi khi dùng host ở Greenhost như: “Tại sao tự nhiên website ra trang trắng khi truy cập? Host có vấn đề? Làm sao Fix?”. Có một sự thật là kỹ thuật cũng không thể biết “lỗi trang trắng” mà quý khách gặp là do nguyên nhân gì.
Nói như vậy để quý khách biết là “lỗi trang trắng” hoặc các lỗi đại loại như 500 Internal Server Error thì có rất nhiều lý do khác nhau dẫn đến lỗi nhưng tất cả đều xuất phát từ 2 nguyên nhân:
1. Lỗi xuất phát từ code trên website (do chỉnh sửa, cập nhật).
2. Lỗi xuất phát từ thiết lập trong web server.

Vậy giải pháp là gì?
Để fix lỗi, chúng ta cần biết nguyên nhân, khi biết nguyên nhân rồi thì dù quý khách là người tập làm code hay người làm web chuyên nghiệp cũng đều có khả năng tự sửa lỗi bằng cách đọc log file đang lưu lại lỗi trên host, khi đó chúng ta sẽ biết chính xác nguyên nhân.

Đối với “Lỗi trang trắng”:
100% lỗi này đều xuất phát từ code của quý khách như chỉnh sửa code khi chưa có kinh nghiệm, gọi hàm không tồn tại, sai cú pháp code, thừa dấu, v.v… Vì vậy, để fix lỗi thì quý khác hãy mở file có tên error_log đối với Hosting Share (vi trí file trong thư mục public_html nếu là lỗi tại trang chủ hoặc tại folder mà website của quý khách đang sử dụng để hiển thi như trang admin, v.v…) lên xem.
Còn đối với server riêng (VPS/Dedicated) thì quý khách mở file cấu hình domain đang bị lỗi sẽ thấy dòng khai báo vị trí để log file và từ đó có thể xem được nó.
Nội dung file log có dạng như sau:
[01-Nov-2015 09:40:17 UTC] PHP Warning: stripslashes() expects parameter 1 to be string, object given in /home/user01/example.com/public_html/index.php on line 25
[01-Nov-2015 09:40:17 UTC] PHP Fatal Error: 500…………………………………………………….
Trong đó, có 2 loại lỗi PHP là:
PHP Warning – Đây là cảnh báo ở mức độ bình thường, các warning này sẽ không ảnh hưởng đến việc website bị gián đoạn. Nó sẽ xuất hiện nếu code của quý khai báo debug (như error_reporting())
PHP Fatal Error – Đây là lỗi nghiêm trọng khi PHP không thể tiếp tục chạy được nếu gặp phải. Nó chính là nguyên nhân dẫn đến “lỗi trang trắng”.
Các lỗi trong erro_log sẽ được ghi thành từng dòng, mỗi dòng là một lần báo lỗi. Tức là cứ 1 lượt truy cập sẽ ghi một hoặc nhiều dòng và có thể lặp lại nhiều lần. Để đọc log lỗi này, quý khách sẽ đọc từ trên xuống dưới ứng với thời gian hiển thị.
Trong từng dòng lỗi, quý khách sẽ biết được đó là lỗi gì và file nào đang báo lỗi liên quan. Ý nghĩa của lỗi sẽ có thể tìm trên Google hoặc nếu là lập trình web, quý khách sẽ biết nó là gì để tiến hành sửa chữa.

Đối với lỗi 500 Internal Server Error:
Lỗi này xuất phát từ thiết lập của Web server như code sai cú pháp, file hoặc folder hoặc cả 2 phân quyền sai khiến Web server không khởi động được. Chính xác hơn là trình duyệt web tại máy tính của quý khách không nhận được dữ liệu từ máy chủ truyền về.
Khi sử dụng Share Hosting thì lỗi này thường do 2 nguyên nhân:
1. Nội dung file “.htaccess” sai cú pháp, biến sử dụng (như php_flag, php_value) không được Web server chấp nhận.
2. Do phân quyền (chmod) sai file .htaccess hoặc các file/folder trong host. (Xem phân quyền chmod tại đây: http://kienthuc.pavietnam.vn/article/Linux-Hosting/Huong-dan-Thu-thuat/Huong-dan-CHMOD-File-va-Folder-tren-hosting-Linux.html)
Fix bằng cách đổi tên file “.htaccess” thành “htaccess.bakup” hoặc xóa file “.htaccess” (không khuyến khích) rồi truy cập lại. Nếu vẫn báo lỗi thì quý khách hãy chmod file “.htaccess” về đúng quyền 644.
Nếu quý khách dùng server riêng (VPS/Dedicated) thì hãy mở file log của Web server ra, nó sẽ nằm trong thư mục /var/log/httpd (Apache) hoặc /var/log/nginx (NGINX) để xem file cấu hình nào bị lỗi, thường thì sẽ phát sinh ra trong lúc quý khác thao tác các file cấu hình VirtualHost.

Lời kết
Việc quý khách biết đọc file log sẽ giúp quý khách sửa được phần nào lỗi thay vì phải liên lạc khắp nơi để hỏi.
Và quý khác cũng nên nhớ, tất cả mọi lỗi trong website đều được ghi vào file log bao gồm lỗi 500, lỗi trang trắng, lỗi không upload được ảnh, v.v… nên ta cứ tập trung vào file log mà đọc để fix lỗi.
Hy vọng, qua bài viết khái quát này sẽ giúp quý khách sử dụng hosting tại Greenhost được tốt hơn, yên tâm chất lượng và xứng đáng khoản đầu tư mà quý khách đã bỏ ra.