Hướng dẫn khắc phục lỗi trắng trang, lỗi 500 (Internal Server Error) trong website WordPress.
Bạn cài một plugin mới hoặc chỉnh sửa các tập tin của theme và sau đó phát hiện ra website của mình bị dính lỗi trắng trang hay lỗi 500? Không có bất cứ thứ gì được hiển thị trên giao diện web, cũng không thấy bất kỳ thông báo lỗi nào ngoài một màu trắng tinh? Trường hợp này còn được gọi là “White Screen of Death”, “lỗi màn hình trắng”, “lỗi trắng trang” hay đôi khi là lỗi 500 (Internal Server Error). Đừng quá lo lắng, mọi việc đều có cách giải quyết. Hôm nay, tôi sẽ hướng dẫn các bạn một số cách thông dụng nhất để khắc phục lỗi trắng trang trong WordPress. Hãy dành ra vài phút để cùng WP Căn bản tìm hiểu nhé.
Tham khảo thêm:
Một số nguyên nhân gây lỗi trắng trang
- Theme không tương thích với phiên bản WordPress.
- Plugin không tương thích với phiên bản WordPress.
- Plugin không tương thích với theme.
- Mã nguồn WordPress, theme hoặc plugin bị lỗi (lỗi code, thiếu file, dính mã độc).
- Bạn chèn thêm code tùy biến gây ra lỗi
- Lỗi file
.htaccess
Cách phát hiện nguyên nhân gây lỗi trắng trang
Có 3 cách khác nhau để làm việc này:
Phát hiện nguyên nhân gây lỗi với WP_DEBUG
Tập tin wp-config.php
trong thư mục gốc của WordPress là chìa khóa để tìm ra vấn đề mà website của bạn đang gặp phải. Tất cả những gì bạn cần làm là thêm một vài dòng mã để kích hoạt “chế độ gỡ lỗi” (debug) cho website của mình.
Bật chế độ debug một cách hiệu quả sẽ giúp hiển thị danh sách các lỗi đang tồn tại. Nếu website của bạn được cài đặt trên localhost (offline), hãy thêm dòng code sau đây vào file wp-config.php
:
define( 'WP_DEBUG', true );
Lưu ý, bạn phải chèn nó vào bên trên dòng sau:
/* That's all, stop editing! Happy blogging. */
Nếu file wp-config.php
của bạn đã có sẵn đoạn code WP_DEBUG
, bạn chỉ cần chuyển giá trị của nó từ false
sang true
là được.
Nếu website đang trực tuyến (online), bạn không nên sử dụng code bên trên bởi vì tất cả các dòng thông báo lỗi sẽ xuất hiện công khai trên web, bao gồm cả đường dẫn đến tập tin trên máy chủ web và các thông tin nhạy cảm khác. Thay vào đó, bạn hãy bật tính năng ghi thông báo lỗi vào trong một tập tin bí mật.
Để kích hoạt tính năng bản ghi lỗi (error_log) và gỡ lỗi (debug) cho một website trực tuyến, hãy thêm đoạn code sau vào tập tin wp-config.php
của bạn (ở vị trí giống như ở trên):
// Enable WP_DEBUG mode
define('WP_DEBUG', true);
// Enable Debug logging to the /wp-content/debug.log file
define('WP_DEBUG_LOG', true);
// Disable display of errors and warnings
define('WP_DEBUG_DISPLAY', false);
@ini_set('display_errors',0);
// Use dev versions of core JS and CSS files (only needed if you are modifying these core files)
define('SCRIPT_DEBUG', true);
Khi đã xong, bạn có thể kiểm tra các thông báo lỗi ngay trên front-end của website hoặc trong error_log. Bản ghi lỗi thường nằm trong thư mục wp-content, tại địa chỉ: /wp-content/debug.log. Một khi đã phát hiện được nguyên nhân gây lỗi, bạn có thể bắt đầu tìm cách sửa chữa nó (copy mã lỗi và tìm kiếm hướng dẫn trên Google chẳng hạn).
Phát hiện nguyên nhân gây lỗi bằng plugin
Rất nhiều plugin có sẵn có thể giúp bạn nhanh chóng xử lý các sự cố trên website của mình một cách dễ dàng. Nếu bạn vẫn có thể truy cập được vào bảng điều khiển WordPress (chỉ bị trắng trang ở giao diện bên ngoài), hãy cố gắng cài đặt một plugin để giúp xác định nguyên nhân gây lỗi.
- Để bật chế độ debug, hãy dùng thử plugin Debug. Còn nếu bạn muốn có thêm lựa chọn để xử lý sự cố thì Debug Bar chính là plugin mà bạn đang cần.
- Đối với WordPress multisite, có một plugin đã được thiết kế đặc biệt dành riêng cho các networks và super admin, giúp xử lý các sự cố, được gọi là Debug This. Nó sở hữu đầy đủ chức năng của hầu hết các plugin gỡ lỗi khác.
Những plugin kể trên đều đáng tin cậy và được cập nhật thường xuyên để đảm bảo khả năng tương thích cũng như sự ổn định. Một khi bạn đã chọn được plugin phù hợp, hãy tiến hành cài đặt và bắt đầu tìm kiếm các lỗi cần sửa chữa.
Kiểm tra error_log trong control panel của host
Nếu đang sử dụng cPanel, bạn có thể kiểm tra các bản ghi lỗi bằng cách click vào mục Error Log trong phần Logs.
Nếu bạn đang sử dụng Plesk, hãy click vào tab Files trên menu top => chọn tiếp mục logs trong menu bên trái, sau đó chọn file error_log từ danh sách.
Nếu bạn đang sử dụng một loại web control panel khác và không chắc chắn về nơi lưu trữ error_log, hãy kiểm tra trang Knowledge Base (KB) của nhà cung cấp hosting hoặc sử dụng Google Search để nhanh chóng để tìm ra vị trí của nó.
Cách khắc phục lỗi trắng trang trong WordPress
Dựa theo các nguyên nhân đã được liệt kê ở trên, chúng ta có thể đề ra một số giải pháp để khắc phục như sau:
Cài đặt lại WordPress, plugin hoặc theme
Trong trường hợp bạn đã xác định được nguyên nhân gây lỗi trắng trang là do WordPress, theme, plugin bị lỗi file hoặc thiếu file, hãy tiến hành cài đặt lại mã nguồn của chúng bằng phương pháp thủ công. Download mã nguồn của WordPress, theme hoặc plugin từ WordPress.org => truy cập thư mục cài đặt WordPress thông qua File Manager của cPanel/ DirectAdmin hoặc phần mềm FTP => Upload file mã nguồn đã download vào thư mục tương ứng => giải nén và ghi đè lên mã nguồn hiện tại.
Tham khảo thêm: Hướng dẫn cập nhật WordPress theo phương pháp thủ công
Sau khi truy cập được vào website, đừng quên cài đặt plugin bảo mật (chẳng hạn như Defender Security hoặc Sucuri Security) để quét xem có file nào lạ trong mã nguồn WordPress của bạn hay không nhé.
Khôi phục theme WordPress mặc định
Nếu bạn vẫn có thể truy cập được vào trang quản trị của WordPress, hãy thử đổi về theme mặc định (2020, 2021…) xem sao. Nếu lỗi trắng trang biến mất và website của bạn xuất hiện trở lại thì có nghĩa là theme mà bạn đang sử dụng có lỗi hoặc xung đột với WordPress hoặc một trong những plugin đang dùng.
Trong trường hợp ngược lại, hãy truy cập thư mục cài đặt WordPress thông qua File Manager của cPanel/ DirectAdmin hoặc phần mềm FTP => tìm tới địa chỉ /wp-content/themes/ => đổi tên thư mục của theme mà bạn đang dùng (thêm _old vào sau tên thư mục chẳng hạn). Nếu nguyên nhân là do theme, bạn sẽ có thể truy cập được vào trang quản trị của WordPress để kích hoạt theme mặc định.
Vô hiệu hóa tất cả các plugin đang kích hoạt
Truy cập thư mục cài đặt WordPress của bạn thông qua File Manager cPanel/ DirectAdmin hoặc phần mềm FTP => tìm tới địa chỉ /wp-content/plugins/ => đổi tên toàn bộ thư mục của các plugin mà bạn đã cài đặt (thêm _old vào sau tên thư mục chẳng hạn). Nếu website của bạn hoạt động bình thường trở lại, hãy thử kích hoạt lần lượt từng plugin một (bằng cách đổi tên của từng thư mục về như cũ) cho đến khi lỗi trắng trang xuất hiện. Khi đó, bạn sẽ biết plugin nào chính là nguyên nhân gây ra vấn đề.
Xóa code tùy biến gây lỗi
Nếu trước đó bạn chèn code tùy biến vào file theme dẫn đến lỗi trắng trang thì tất cả những gì bạn cần làm là truy cập thư mục cài đặt WordPress thông qua File Manager của cPanel/ DirectAdmin hoặc phần mềm FTP => tìm tới địa chỉ /wp-content/themes/ => mở file theme mà bạn đã chèn code ra => xóa đoạn code đó đi rồi lưu lại là được.
Khôi phục tập tin .htaccess
Nếu bạn có sẵn bản backup trước đó của tập tin .htaccess
, hãy upload và ghi đè lên tập tin .htaccess
hiện tại (trong thư mục cài đặt của WordPress, nằm ngang hàng với file wp-config.php
). Còn nếu không, hãy chỉnh sửa nội dung của tập tin .htaccess
về dạng “xuất xưởng” như sau:
# BEGIN WordPress
RewriteEngine On
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
# END WordPress
Nếu bạn cài đặt WordPress multisite, hãy tham khảo thêm các file .htaccess
mặc định tại đây.
Tham khảo bài viết “Hiển thị file .htaccess trong cPanel một cách đơn giản” nếu bạn không tìm thấy file .htaccess
. Lưu ý, file này chỉ có trên các web server Apache và LiteSpeed/ Open LiteSpeed, không có trên web server NginX.
Lưu lại và kiểm tra xem trang web của bạn đã có thể truy cập bình thường chưa nhé.
Bạn đang sử dụng một plugin tạo cache?
Plugin tạo bộ nhớ đệm (cache) có thể là nguyên nhân gây ra lỗi trắng trang cho website của bạn, đặc biệt là khi bạn update dữ liệu hoặc chuyển host mà quên không vô hiệu hóa plugin này. Để kiểm tra xem plugin tạo cache có phải là thủ phạm hay không, các bạn chỉ cần truy cập thư mục /wp-content/plugins/, tìm và đổi tên thư mục của nó đi là được (thêm _old vào sau tên thư mục chẳng hạn).
Kiểm tra giới hạn băng thông của host
Nó đã vượt quá mức cho phép? Điều này có thể gây ra lỗi trắng trang. Nếu được, bạn nên tham khảo ý kiến của nhà cung cấp hosting để tìm giải pháp khắc phục.
Restore dữ liệu backup
Và trong hầu hết các trường hợp, cách đơn giản nhưng hiệu quả nhất để khắc phục lỗi trắng trang (nếu bạn không tìm ra nguyên nhân cụ thể) chính là restore dữ liệu từ các bản backup sẵn có. Vì vậy, đừng quên sao lưu dữ liệu website của bạn trước khi có ý định làm bất cứ điều gì nguy hiểm nhé.
Trên đây là một số phương pháp giúp bạn nhanh chóng phát hiện nguyên nhân và khắc phục lỗi trắng trang trong WordPress. Nếu bạn biết bất kỳ phương pháp nào khác, đừng quên chia sẻ nó với chúng tôi trong khung bình luận bên dưới.
Nếu bạn thích bài viết này, hãy theo dõi blog của tôi để thường xuyên cập nhật những bài viết hay nhất, mới nhất nhé. Cảm ơn rất nhiều. :)
Dạ chào anh Hiếu, hiện em đang bị lỗi trắng trang, nguyên nhân thì là do trước em dùng host nước ngoài sau đó chuyển sang sài VPS của PA việt nam, mỗi khi em chuyển các web wordpress từ bên cái host nước ngoài thì nó lại bị tình trạng là trắng trang nhưng chỉ trắng phía dưới của phần header. vào wp-admin thì dùng bình thường load vẫn rất nhanh, nhưng nếu vào web thì nó chậm khủng khiếp và trắng hết phần bên dưới.
site của em : dietmoi.org.vn khi nào anh online thì test thử giúp em với nha.
Trước đây em có từng sửa được cái lỗi này rồi nhưng do cả năm rồi không chuyển cái nào giờ chuyển thì nó lại bị mà chẳng nhớ là nó nằm ở đâu mà xóa nữa :). em chỉ nhớ là trong code của cái host nước ngoài thì nó tự động thêm mấy cái dòng gì đó trong các file wp-config.php , wp-includes/functions.php và cả ở đầu nữa thì phải em không nhớ rõ nắm vì trước đây em vào xóa hết mấy cái dòng đó đi thì web chạy được mà giờ thì nó vẫn trơ trơ ra đó em nghĩ là vẫn còn dòng nào chưa xóa :D.
em mở cái debug lỗi thì nó hiện cái đống bên dưới, đây chỉ là 1 khúc nhỏ ở trên đầu. còn nó còn dài lắm kéo mỏi mắt không hết và nó dật cái màn hình khi kéo rất khó chịu.
Warning: include(/home/dmorg/domains/dietmoi.org.vn/public_html/wp-content/advanced-cache.php): failed to open stream: No such file or directory in /home/dmorg/domains/dietmoi.org.vn/public_html/wp-settings.php on line 65 Warning: include(): Failed opening ‘/home/dmorg/domains/dietmoi.org.vn/public_html/wp-content/advanced-cache.php’ for inclusion (include_path=’.:/usr/local/lib/php’) in /home/dmorg/domains/dietmoi.org.vn/public_html/wp-settings.php on line 65
Mình dùng Joomla và đã làm một thứ nhưng trang vẫn trắng tinh. Mình chuyển hosting và cấu hình DNS rồi. Sau đó tạo DB và chỉnh sửa file config luôn. Mà vẫn trắng. Không biết bị lỗi gì luôn.
Cái này áp dụng cho WordPress mà bạn. Có phải Joomla đâu. :P
Chào a. Site wordpress hiện hiện ko vào đc phần /wp-admin, hoặc /admin. E kiểm tra thì thấy file error_log dung lượng lên tới tận gần 100MB?
Bạn đã thử bật tính năng debug xem nó bị lỗi gì chưa? Copy một đoạn error_log gửi lên mình xem nhé. :P
e view file đó trên Host thì ko thấy gì, mà dung lượng thì lớn vậy, hay là dow về xem?
Chắc do file dung lượng lớn quá nên trên host không mở được. Bạn thử down về rồi mở ra xem sao. :P
Chào bạn, web mình bị lỗi trắng trang không truy cập được vào wordpress luôn, lý do lỗi thế là mình thêm 1 đoạn code php vào function, Mọi hôm mình cũng bị thế này sau mình xóa nguồn wordpress luôn sau đó tải lại, nhưng làm thê là các bài viết dữ liệu trong web sẽ bị mất. mình muốn hỏi bạn có cách nào sữa được mà k vào trang domain.com/wp-admin không
Lỗi này đơn giản mà bạn. Bạn chỉ cần sử dụng file manager hoặc FTP để mở file functions.php ra và xóa đoạn code vừa thêm đi là được. :-)
thanks bạn. mò mẫm mãi cuối cùng cũng sữa được
Chúc mừng bạn. :)
Đã khắc phục được cám ơn bác đã chia sẽ
Rất vui vì đã giúp được bạn. :D
chào bạn sau khi minh tắt cái wp-rocket thì hết bị , nhưng giờ nếu mình vẫn muốn dùng plugin này thì có phương án nào giải quyết không bạn
Tắt hết các tính năng của WP Rocket rồi bật lần lượt và kiểm tra xem tính năng nào gây lỗi trắng trang => vô hiệu hóa tính năng đó đi. Nếu chỉ cần cài WP Rocket lên là đã bị trắng trang rồi thì kiểm tra error_log xem nó có báo lỗi gì không.
Còm men cái để Thím biết anh còn sống :v
Sống chết mặc bay. :D :P
Lỗi trắng trang này nhiều lúc lạ lắm
Xưa mình có 1 hosting mua ở VN up mà cứ bị lỗi trắng trang phần quản trị
Sau đó chuyển qua hosting của US thì hết. Vậy do hosting hay code nhỉ :(
Nếu thế thì có thể là do nhà cung cấp host chặn một số hàm nào đó mà WordPress yêu cầu phải có? :P
Bài viết rất hay, cám ơn bạn!
Mình cũng hay dùng wp-optimize, nghe bạn nói thì không biết nó có gây hại nhiều không? Có thật sự nó làm chậm website không bạn?
Tùy thôi. Trước giờ mình vẫn dùng WP Optimize và chưa gặp bất cứ vấn đề nào cả. :P
P/s: Vui lòng không chèn từ khóa hoặc URL vào nickname bạn nhé.
WP-Optimize rất tốt cho đến khi nó phải optimize một số lượng lớn record và bạn không đủ kiên nhẫn và tắt ngang giữa chừng.
Trong lúc WP Optimize đang dọn dẹp và tối ưu thì tốt nhất không nên tắt ngang nhé. Lần trước mình phải đợi tới gần 20 phút nó mới tối ưu xong 1 cái database có dung lượng 2GB chứa toàn kết quả test trắc nghiệm của người dùng. :P
Kinh nghiệm xương máu bác ạ. Giờ sau khi xóa tay rồi nhưng database vẫn ko optimize được. Vẫn đang phải dò từng table.
Hi vọng có thêm nhiều bài viết khắc phục lỗi dù mình chưa gặp lỗi này. Hiện bị 1 lỗi liên quan đến database, sau khi dùng plugin Wp-Optimize bị lỗi thì giờ đây database có vấn đề, nó không bung lỗi nhưng khiến website chậm và không Optimize được nữa. Chưa biết tại sao.
Bạn thử tối ưu với WP-Sweep xem sao: https://wpcanban.com/wordpress/thu-thuat-wordpress/don-dep-wordpress-database-voi-plugin-wp-sweep.html :P
Mình đã thử bằng phpmyadmin nhưng sau đó thường là treo mysql luôn. wp-seep không biết có gì khác biệt không bác.
Thử xem có hiệu quả không là biết ngay thôi mà. WP-Sweep có cơ chế hoạt động khác WP Optimize. :)
Plugins khá hay bác ạ. Nhưng vẫn chưa giải quyết được vấn đề của database. Có thể do duplicate post meta quá nhiều. Giờ em phải xóa tay. Hi vọng ok.
Thanks bác đã giới thiệu plugin.