Chuyển đến nội dung

Cách sửa lỗi “There Has Been a Critical Error on This Website” trong WordPress

Hướng dẫn từng bước để tìm và sửa critical error của WordPress: recovery mode, debug log, xung đột plugin và theme, phiên bản PHP và giới hạn bộ nhớ.

Developer reviewing WordPress code on two monitors

Bạn mở website và thay vì trang chủ, bạn chỉ thấy một dòng: “There has been a critical error on this website.” Đôi khi còn thêm câu “Please check your site admin email inbox for instructions.” Khách truy cập cũng thấy cùng thông báo đó, nên từng phút đều quan trọng.

Tin tốt: lỗi này gần như không bao giờ có nghĩa là nội dung của bạn đã mất. Nó có nghĩa là PHP gặp fatal error và WordPress ngừng tải trang để bảo vệ website. Trong hầu hết trường hợp, nguyên nhân là một plugin, một theme hoặc việc đổi phiên bản PHP, và có thể sửa mà không mất gì.

Hướng dẫn này đi qua đúng những bước mà chuyên viên WordPress của chúng tôi dùng, từ những kiểm tra nhanh nhất đến những bước sâu hơn.

Trước khi bắt đầu: nếu có thể, hãy tải bản sao lưu từ bảng điều khiển hosting. Một số bước bên dưới gồm việc đổi tên thư mục, và bản sao lưu giúp bạn luôn hoàn tác được.

Thông báo critical error thực sự có nghĩa là gì

Từ WordPress 5.2, khi PHP ném ra fatal error (ví dụ một plugin gọi hàm không tồn tại), WordPress bắt lỗi đó và hiện màn hình critical error thay vì trang trắng. Đồng thời, WordPress cố gửi email cho quản trị viên website kèm chi tiết và một liên kết recovery mode đặc biệt.

Những nguyên nhân phổ biến nhất chúng tôi gặp:

  • Bản cập nhật plugin hoặc theme không tương thích với phiên bản WordPress hoặc PHP của bạn
  • Nhà cung cấp hosting nâng cấp PHP (ví dụ từ 7.4 lên 8.1 hoặc 8.2) và code cũ bị lỗi
  • Hai plugin xung đột với nhau
  • PHP hết bộ nhớ
  • Bản cập nhật bị hỏng hoặc dở dang (quá trình cập nhật dừng giữa chừng)

Bước 1: Kiểm tra email quản trị để lấy liên kết recovery mode

Xem hộp thư đến (và thư mục spam) của địa chỉ email được đặt làm email quản trị viên WordPress. Tiêu đề thư thường là “Your Site is Experiencing a Technical Issue”. Thư thường nêu tên plugin hoặc theme gây lỗi.

Nhấp vào liên kết recovery mode. Liên kết này đăng nhập bạn vào wp-admin với plugin hoặc theme lỗi được tạm dừng, để bạn có thể tắt, cập nhật hoặc thay thế nó. Nếu email nêu tên một plugin, hãy bắt đầu từ đó.

Không có email? Điều này khá phổ biến, vì nhiều nhà cung cấp hosting không gửi email của WordPress một cách ổn định. Chuyển sang bước 2.

Bước 2: Bật debug log để tìm đúng nguyên nhân

WordPress có thể ghi lỗi thật vào một file log. Mở wp-config.php trong File Manager của hosting (hoặc qua FTP) và tìm dòng define( 'WP_DEBUG', false );. Thay bằng:

define( 'WP_DEBUG', true );
define( 'WP_DEBUG_LOG', true );
define( 'WP_DEBUG_DISPLAY', false );

Tải lại trang bị lỗi một lần, rồi mở wp-content/debug.log. Tìm dòng bắt đầu bằng PHP Fatal error. Dòng đó chứa đường dẫn file, ví dụ:

PHP Fatal error: Uncaught Error: Call to undefined function ... in /wp-content/plugins/example-plugin/includes/class-main.php:142

Thư mục sau /plugins/ hoặc /themes/ cho biết chính xác phần nào bị hỏng. Trong ví dụ này là example-plugin.

Quan trọng: khi website đã được sửa, hãy đặt WP_DEBUG lại thành false và xóa debug.log. Để file log ở đó có thể lộ thông tin về website của bạn.

Bước 3: Tắt plugin lỗi khi không vào được wp-admin

Nếu bạn không vào được bảng điều khiển, có thể tắt plugin bằng cách đổi tên thư mục của nó:

  1. Trong File Manager hoặc FTP, vào wp-content/plugins/.
  2. Đổi tên thư mục plugin, ví dụ example-plugin thành example-plugin-off.
  3. Tải lại website. WordPress không tìm thấy plugin nên sẽ bỏ qua nó.

Nếu log không chỉ ra một plugin cụ thể, hãy đổi tên cả thư mục plugins thành plugins-off. Nếu website hoạt động lại, đổi tên lại thành plugins rồi tắt từng plugin một cho đến khi lỗi quay lại. Plugin cuối cùng bạn bật lại chính là thủ phạm.

Bước 4: Loại trừ theme

Nếu đường dẫn lỗi trỏ tới wp-content/themes/, hãy đổi tên thư mục theme đang dùng. WordPress sẽ quay về theme mặc định như Twenty Twenty-Four, miễn là theme đó đã được cài. Nếu chưa có theme mặc định nào, hãy tải một theme từ WordPress.org lên trước.

Nếu bạn dùng child theme, hãy kiểm tra cả theme cha. Code tùy chỉnh thêm vào functions.php của theme là nguyên nhân thường gặp, đặc biệt sau khi nâng cấp PHP.

Bước 5: Kiểm tra phiên bản PHP

Nếu lỗi bắt đầu mà bạn không cập nhật gì, nhà cung cấp hosting có thể đã đổi phiên bản PHP. Hầu hết bảng điều khiển hosting (cPanel, Plesk, CyberPanel và các panel khác) cho phép chọn phiên bản PHP cho từng website.

Tạm thời chuyển về phiên bản trước có thể đưa website hoạt động lại ngay. Hãy xem đây là cách sửa ngắn hạn: các phiên bản PHP cũ sẽ ngừng nhận bản vá bảo mật, nên plugin hoặc theme không tương thích vẫn cần được cập nhật hoặc thay thế.

Bước 6: Sửa lỗi “Allowed memory size exhausted”

Nếu debug log ghi “Allowed memory size of … bytes exhausted”, PHP đã hết bộ nhớ. Thêm dòng sau vào wp-config.php, phía trên dòng “That’s all, stop editing”:

define( 'WP_MEMORY_LIMIT', '256M' );

Một số nhà cung cấp hosting giới hạn bộ nhớ thấp hơn mức này, nên nếu lỗi vẫn tiếp tục, hãy yêu cầu họ tăng memory_limit của PHP. Nếu bộ nhớ cứ hết liên tục, một plugin có thể bị lỗi hoặc vòng lặp, và việc đó đáng được kiểm tra hơn là chỉ tăng giới hạn thêm lần nữa. Hướng dẫn của chúng tôi về cách sửa lỗi allowed memory size exhausted giải thích cách tìm nguyên nhân.

Bước 7: Sửa bản cập nhật WordPress bị hỏng

Nếu lỗi xuất hiện ngay sau khi cập nhật lõi WordPress, bản cập nhật có thể đã dừng giữa chừng. Tìm file tên .maintenance ở thư mục gốc website và xóa nó. Sau đó tải bản WordPress mới cùng phiên bản từ WordPress.org và tải lại các thư mục wp-admin và wp-includes. Đừng ghi đè wp-content hoặc wp-config.php, vì đó là nơi chứa nội dung và cài đặt của bạn.

Sau khi website hoạt động lại

  • Đặt WP_DEBUG lại thành false và xóa wp-content/debug.log.
  • Cập nhật hoặc thay thế plugin hay theme gây lỗi. Xem changelog và diễn đàn hỗ trợ để biết các sự cố đã được báo.
  • Kiểm tra các trang quan trọng: trang chủ, form liên hệ, trang thanh toán nếu bạn có cửa hàng.
  • Thiết lập sao lưu tự động để lần sau chỉ cần khôi phục nhanh thay vì xử lý khẩn cấp.
  • Nếu website vẫn hiện trang trắng thay vì thông báo lỗi, xem hướng dẫn của chúng tôi về màn hình trắng WordPress (white screen of death).

Khi nào nên nhờ chuyên gia

Hãy nhờ hỗ trợ nếu debug log trỏ tới đoạn code bạn không nhận ra, nếu lỗi quay lại sau khi đã sửa, nếu bạn đang chạy cửa hàng trực tuyến và mất đơn hàng, hoặc nếu bạn không có quyền truy cập file hosting. Đoán mò trên website đang chạy có thể biến một lỗi thành nhiều lỗi.

Muốn chúng tôi sửa giúp bạn? Dịch vụ WordPress Fix của chúng tôi tìm nguyên nhân gốc, sửa lỗi và cho bạn biết chính xác những gì đã thay đổi. Giá cố định $45, được xác nhận trước khi bắt đầu làm, và được bảo đảm bởi Service Guarantee của chúng tôi: nếu chúng tôi không sửa được vấn đề đã thỏa thuận, bạn không phải trả. Yêu cầu sửa lỗi.

Câu hỏi thường gặp

Tôi có mất nội dung vì critical error không?

Gần như không. Bài viết, trang và đơn hàng được lưu trong cơ sở dữ liệu, còn critical error chỉ ngăn PHP dựng trang. Khi đoạn code lỗi bị tắt, nội dung sẽ hiện lại.

Vì sao lỗi xảy ra khi tôi không thay đổi gì?

Cập nhật plugin tự động, nhà cung cấp hosting nâng cấp PHP, hoặc giấy phép plugin trả phí hết hạn đều có thể gây lỗi mà bạn không làm gì cả.

Critical error có phải dấu hiệu website bị hack không?

Thường là không. Nhưng nếu debug log trỏ tới các file lạ, hoặc bạn thấy những file mình không tạo trong wp-content, hãy xem đó là khả năng nhiễm mã độc và làm theo hướng dẫn cần làm gì khi website WordPress bị hack.

Vẫn đang kẹt? Chúng tôi có thể sửa giúp bạn

Cho chúng tôi biết chuyện đang xảy ra. Chúng tôi xác nhận phạm vi và giá trước khi bất kỳ công việc nào bắt đầu.