Cách đây nhiều năm về trước, khi mà các webserver vẫn còn hạn chế nhiều cái thì mỗi khi website bị lỗi trong code nó sẽ đều hiển thị đoạn code bị lỗi ngay trên website khiến ai vào cũng thấy. Ở đoạn đó, đối với người quản trị thì nó sẽ giúp bạn biết được file nào bị lỗi, lỗi ở đoạn code nào. Còn đối với các hacker xấu tính thì họ sẽ khai thác lỗi đó như là một bug để xâm nhập, chẳng hạn như vậy.

Đó là lý do tại sao mà hiện nay các nhà cung cấp host và các thiết lập mặc định của các webserver đều thiết lập ẩn đoạn báo lỗi trong code để tăng tính bảo mật, thay vì hiện lỗi thì bây giờ các lỗi code đa phần đều hiển thị với màn hình trắng, hay còn gọi là lỗi trắng trang.

Mình đã từng (bị) hỏi rất nhiều câu hỏi dạng như “Ơ, website mình đang bị trắng trang, làm sao để fix?“, nói thật là mình có mọc thêm bộ não nữa cũng không fix được cái lỗi trắng trang nếu chỉ dựa vào một câu nói “website mình bị lỗi trắng trang”.

Mình nói như vậy để bạn biết là lỗi trắng trang hoặc lỗi 500 Internal Server có hàng vạn lý do khác nhau nhưng tất cả nguyên nhân đều xuất phát từ thiết lập trong webserver (.htaccess đối với Apache và file .conf đối với NGINX) và xuất phát từ code trên website.

Giải pháp

Muốn fix được lỗi, chúng ta cần biết nguyên nhân, khi biết được nguyên nhân rồi thì dù bạn là newbie hay pro cũng đều tự sửa lỗi được bằng cách đọc file log lưu lại lỗi, ở đó bạn sẽ biết được nguyên nhân chính xác hơn.

Đối với lỗi trắng trang

100% lỗi trắng trang đều xuất phát từ code của bạn như gọi một hàm không tồn tại, code sai cú pháp, viết thừa dấu,…nên để fix được lỗi này thì hãy mở file error log lên mà xem.

File log này thường sẽ có tên dạng là error_log, error.log hoặc đại loại là như vậy và sẽ nằm ở thư mục /public_html đối với Shared Host, còn đối với server riêng (VPS/Dedicated) thì bạn mở file cấu hình domain đang bị lỗi của bạn ra sẽ thấy dòng khai báo log và cứ dò theo đường dẫn đó mà mở lên. Nếu dùng Shared Host bạn không thể tìm ra file log thì hãy gửi hỗ trợ đến bộ phận kỹ thuật để họ tìm giúp.

Nội dung file log có dạng như sau:

01
02
[21-Aug-2014 21:40:17 UTC] PHP Warning:  stripslashes() expects parameter 1 to be string, object given in /path/xxx/example.com/public_html/file.php on line XXX
[21-Aug-2014 21:40:17 UTC] PHP Fatal Error: XXX.............................................................

Trong đó, có 2 loại lỗi PHP là:

  • PHP Warning – Cảnh báo với mức độ bình thường, các warning không ảnh hưởng đến việc website bị gián đoạn và mặc định nó sẽ ẩn đi. Nếu bạn thiết lập phần WP_DEBUG trong file wp-config.php thành TRUE thì nó sẽ hiển thị Warning ra ngoài website
  • PHP Fatal Error – Đây là lỗi nghiêm trọng mà PHP không thể tiếp tục chạy được nếu gặp phải, là nguyên nhân dẫn đến lỗi trắng trang.

Các lỗi trong file log sẽ được khai báo theo từng dòng, mỗi dòng là một lần báo lỗi, tức là một lượt truy cập vào mà nó báo lỗi thì nó sẽ hiển thị 1 dòng và có thể lặp lại nhiều lần. Để đọc log, bạn nên đọc từ trên xuống dưới tương ứng với sắp xếp từ lỗi cũ tới lỗi mới, hoặc bạn có thể căn cứ vô cái mốc thời gian ở đoạn đầu dòng.

Trong mỗi dòng báo lỗi, bạn sẽ biết được đó là lỗi gì và file nào bị lỗi. Nếu bạn muốn biết ý nghĩa của lỗi thì lên Google mà tìm, cái quan trọng là bạn biết được file nào bị lỗi. Nếu file đó là của plugin thì cứ tắt plugin đó bằng cách đổi tên thư mục plugin là xong.

Nếu không có file error_log, bạn hãy mở file wp-config.php ra và tìm:

01
define('WP_DEBUG', false);

Sửa false thành true và save lại.

Đối với lỗi 500

Lỗi 500 là xuất phát từ việc thiết lập của Webserver như sai cú pháp các file cấu hình khiến Webserver không khởi động lại được. Nói chính xác hơn là trình duyệt của bạn không nhận được tín hiệu truyền tải từ Webserver.

Nếu bạn dùng Shared Host thì lỗi này thường có 2 nguyên nhân là bạn chèn nội dung file .htaccess sai cú pháp hoặc là CHMOD file .htaccess bị sai. Hãy fix bằng cách xóa nội dung file .htaccess đi và truy cập lại, nếu nó vẫn báo lỗi thì hãy CHMOD file .htaccess về 755, 644 hoặc 744.

Nếu bạn dùng server riêng (VPS, Dedicated) thì hãy mở file log của webserver 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 bạn táy máy các file cấu hình VirtualHost.

 Lời kết

Người ta nói hãy cho cần thay vì cho con cá, và việc bạn biết đọc file log cũng giống như bạn đang sở hữu một cái cần mà bạn có thể sửa được bất kỳ lỗi nào thay vì phải chạy khắp nơi để hỏi để rồi chẳng nhận được câu trả lời đâu vào đâu.

Hãy 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 trắng trang, lỗi không upload được ảnh,…..Nên cứ đè file log ra mà đọc, mình cũng phải đọc được file log thì mới fix được thôi.

Hy vọng bài này sẽ giúp ích cho bạn.