Khắc phục lỗi 500 Internal Server Error trên cPanel
Giới Thiệu
Lỗi "500 Internal Server Error" là một trong những lỗi phổ biến nhất mà người quản trị website hoặc người dùng cPanel có thể gặp phải. Đây là một mã lỗi chung, có nghĩa là máy chủ gặp phải một sự cố không mong muốn và không thể xử lý yêu cầu của bạn. Điều này khiến website của bạn không thể truy cập được, gây ảnh hưởng đến trải nghiệm người dùng và SEO.
Nguyên nhân gây ra lỗi 500 rất đa dạng, từ các vấn đề về quyền truy cập tệp, lỗi cú pháp trong tệp .htaccess, giới hạn tài nguyên PHP, đến các lỗi trong mã nguồn của ứng dụng. Hướng dẫn này sẽ giúp bạn từng bước chẩn đoán và khắc phục lỗi 500 Internal Server Error trên môi trường cPanel.
📋 Thời gian: 15-30 phút | Độ khó: Trung bình
Yêu Cầu
Để thực hiện theo hướng dẫn này, bạn cần:
- Quyền truy cập vào tài khoản cPanel của bạn.
- Tài khoản FTP/SFTP hoặc công cụ "File Manager" trong cPanel.
- (Tùy chọn) Quyền truy cập SSH vào máy chủ của bạn để có thể thực hiện một số lệnh nhanh hơn.
- Kiến thức cơ bản về quản lý tệp và thư mục trên hosting.
Các Bước Thực Hiện
Bước 1: Kiểm tra Nhật ký lỗi (Error Logs)
Đây là bước đầu tiên và quan trọng nhất để xác định nguyên nhân gốc rễ của lỗi 500. Nhật ký lỗi của máy chủ thường cung cấp thông tin chi tiết về sự cố.
- Đăng nhập vào cPanel.
- Tìm mục Metrics (Số liệu thống kê) và nhấp vào Errors (Lỗi).
- Bđơn sẽ thấy danh sách các lỗi gần đây. Hãy tìm kiếm các lỗi có liên quan đến website của bạn, đặc biệt là các lỗi PHP hoặc Apache.
- Tìm kiếm: Chú ý các đường dẫn tệp, số dòng, và mô tả lỗi để xác định tệp hoặc đoạn mã gây ra sự cố.
# Ví dụ về một lỗi có thể xuất hiện trong Error Logs
# [Thu Jan 01 10:00:00 2023] [php:error] PHP Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 262144 bytes) in /home/user/public_html/wp-includes/class-wp-query.php on line 1234
# Lỗi này chỉ ra rằng website đã vượt quá giới hạn bộ nhớ PHP.
#
# [Thu Jan 01 10:00:00 2023] [alert] [client 192.168.1.1] /home/user/public_html/.htaccess: Invalid command 'Order', perhaps misspelled or defined by a module not included in the server configuration
# Lỗi này chỉ ra có lỗi cú pháp trong tệp .htaccess.
💡 Mẹo: Nếu nhật ký lỗi trống hoặc không cung cấp đủ thông tin, bạn có thể cần kích hoạt hiển thị lỗi PHP trực tiếp trên website. Tuy nhiên, hãy nhớ tắt nó sau khi khắc phục xong vì nó có thể hiển thị thông tin nhạy cảm cho người dùng.
Bước 2: Kiểm tra Quyền truy cập tệp và thư mục (File and Folder Permissions)
Quyền truy cập tệp không chính xác là một nguyên nhân rất phổ biến gây ra lỗi 500, đặc biệt là trên các máy chủ Apache.
-
Đăng nhập vào cPanel.
-
Trong mục Files (Tệp), nhấp vào File Manager (Trình quản lý tệp).
-
Điều hướng đến thư mục gốc của website của bạn (thường là
public_html). -
Kiểm tra và sửa quyền:
- Thư mục (Directories): Nên được đặt là 755.
- Tệp (Files): Nên được đặt là 644.
- Ngoại lệ: Tệp
wp-config.php(WordPress) đôi khi được khuyến nghị đặt là640hoặc440để tăng cường bảo mật.
Để thay đổi quyền, nhấp chuột phải vào tệp hoặc thư mục, chọn "Change Permissions" (Thay đổi quyền) và nhập giá trị số tương ứng.
# Nếu bạn có quyền SSH, bạn có thể chạy các lệnh này từ thư mục gốc của website:
# Đặt quyền 755 cho tất cả các thư mục
find . -type d -exec chmod 755 {} \;
# Đặt quyền 644 cho tất cả các tệp
find . -type f -exec chmod 644 {} \;⚠️ Cảnh báo: Không bao giờ đặt quyền 777 cho thư mục hoặc tệp trên máy chủ sản xuất, trừ khi có yêu cầu cụ thể và bạn hiểu rõ rủi ro bảo mật.
Bước 3: Kiểm tra tệp .htaccess
Tệp .htaccess là một tệp cấu hình mạnh mẽ nhưng cũng là nguyên nhân hàng đầu gây ra lỗi 500 nếu có lỗi cú pháp hoặc các chỉ thị không tương thích với cấu hình máy chủ.
- Đăng nhập vào cPanel và mở File Manager.
- Điều hướng đến thư mục gốc của website (
public_html). - Nếu bạn không thấy tệp
.htaccess, hãy đảm bảo bạn đã bật tùy chọn hiển thị các tệp ẩn (Settings -> Show Hidden Files (dotfiles)). - Đổi tên tệp .htaccess: Đổi tên tệp
.htaccesshiện có thành một tên khác, ví dụ:.htaccess_old.# Trong File Manager, nhấp chuột phải vào .htaccess và chọn "Rename"
# Hoặc qua SSH:
mv public_html/.htaccess public_html/.htaccess_old - Kiểm tra website: Sau khi đổi tên, hãy truy cập lại website của bạn.
- Nếu website hoạt động bình thường, lỗi 500 là do tệp
.htaccesscủa bạn. - Nếu website vẫn bị lỗi, vấn đề không nằm ở
.htaccess. Bạn có thể đổi tên tệp trở lại thành.htaccessđể khôi phục cấu hình ban đầu và chuyển sang bước tiếp theo.
- Nếu website hoạt động bình thường, lỗi 500 là do tệp
- Khắc phục lỗi .htaccess (nếu là nguyên nhân):
- Xóa nội dung của tệp
.htaccess_oldvà thêm từng dòng chỉ thị một, kiểm tra website sau mỗi lần thêm để xác định dòng nào gây lỗi. - Nếu bạn sử dụng CMS như WordPress, hãy thử tạo lại tệp
.htaccessmặc định bằng cách vào Settings > Permalinks và nhấp vào "Save Changes" mà không thay đổi gì.
- Xóa nội dung của tệp
Bước 4: Tăng giới hạn bộ nhớ PHP (PHP Memory Limit)
Nếu lỗi trong nhật ký (Bước 1) chỉ ra "Allowed memory size exhausted", điều này có nghĩa là script PHP của bạn đang sử dụng nhiều bộ nhớ hơn mức cho phép.
-
Đăng nhập vào cPanel.
-
Tìm mục Software (Phần mềm) và nhấp vào MultiPHP INI Editor hoặc Select PHP Version.
-
Trong MultiPHP INI Editor:
- Chọn tên miền của bạn.
- Tìm tùy chọn
memory_limit. - Tăng giá trị này lên (ví dụ: từ
128Mlên256Mhoặc512M). - Nhấp vào "Apply" hoặc "Save".
-
Trong Select PHP Version:
- Nhấp vào "Switch To PHP Options" hoặc "Options".
- Tìm
memory_limitvà chỉnh sửa giá trị. - Nhấp vào "Save".
# Nếu bạn có thể chỉnh sửa tệp .user.ini hoặc php.ini trong thư mục gốc của website:
memory_limit = 256M✅ Lưu ý: Việc tăng giới hạn bộ nhớ có thể giải quyết lỗi, nhưng cũng có thể là dấu hiệu cho thấy có script kém hiệu quả đang chạy trên website của bạn.
Bước 5: Kiểm tra phiên bản PHP
Đôi khi, ứng dụng của bạn không tương thích với phiên bản PHP đang chạy trên máy chủ, gây ra lỗi 500.
- Đăng nhập vào cPanel.
- Trong mục Software (Phần mềm), nhấp vào Select PHP Version.
- Kiểm tra phiên bản PHP hiện tại.
- Thử chuyển sang một phiên bản PHP ổn định khác (ví dụ: nếu bạn đang dùng PHP 8.1 và gặp lỗi, hãy thử chuyển xuống PHP 8.0 hoặc 7.4).
- Sau khi thay đổi, hãy kiểm tra lại website của bạn.
- Nếu lỗi biến mất, hãy giữ phiên bản PHP mới và kiểm tra kỹ lưỡng website để đảm bảo tất cả các chức năng đều hoạt động.
- Nếu vẫn bị lỗi, hãy chuyển về phiên bản PHP ban đầu và thử các bước khác.
Bước 6: Kiểm tra lỗi trong mã nguồn
Nếu các bước trên không giải quyết được vấn đề và nhật ký lỗi chỉ ra một tệp script cụ thể, có thể có lỗi trong mã nguồn của ứng dụng.
- Xác định tệp gây lỗi: Dựa vào thông tin từ Error Logs (Bước 1).
- Kiểm tra các thay đổi gần đây: Bạn hoặc nhà phát triển đã thực hiện thay đổi nào gần đây trên website không? Nếu có, hãy thử hoàn tác các thay đổi đó.
- Sử dụng bản sao lưu: Nếu bạn có bản sao lưu website gần đây, hãy thử khôi phục lại phiên bản trước đó để xem lỗi có biến mất không.
- Debug mã nguồn: Nếu bạn là nhà phát triển, hãy sử dụng các công cụ debug để kiểm tra tệp script cụ thể được chỉ ra trong nhật ký lỗi.
Troubleshooting
-
Không tìm thấy bất kỳ lỗi nào trong Error Logs:
- Hãy đảm bảo bạn đã kiểm tra đúng miền hoặc thư mục.
- Kích hoạt hiển thị lỗi PHP trên màn hình bằng cách thêm dòng sau vào tệp
.user.inihoặcphp.initrong thư mục gốc của website (hoặc qua MultiPHP INI Editor trong cPanel):⚠️ Quan trọng: Luôn tắtdisplay_errors = On
error_reporting = E_ALLdisplay_errors = Onsau khi khắc phục xong để tránh hiển thị thông tin nhạy cảm cho người dùng và tránh các lỗi bảo mật.
-
Lỗi 500 vẫn còn sau khi thử tất cả các bước:
- Thu thập tất cả thông tin bạn đã tìm thấy (từ nhật ký lỗi, các bước đã thử, kết quả) và liên hệ với nhà cung cấp dịch vụ hosting của bạn. Họ có thể có quyền truy cập vào các nhật ký máy chủ sâu hơn hoặc các công cụ chẩn đoán chuyên biệt để giúp bạn.
-
Luôn sao lưu dữ liệu:
- 💡 Trước khi thực hiện bất kỳ thay đổi lớn nào (đặc biệt là chỉnh sửa tệp
.htaccesshoặc mã nguồn), hãy luôn tạo bản sao lưu đầy đủ cho website của bạn. Điều này giúp bạn dễ dàng khôi phục nếu có sự cố.
- 💡 Trước khi thực hiện bất kỳ thay đổi lớn nào (đặc biệt là chỉnh sửa tệp
Kết Luận
Lỗi 500 Internal Server Error có thể gây khó chịu, nhưng bằng cách tiếp cận có hệ thống, bạn hoàn toàn có thể chẩn đoán và khắc phục nó. Bắt đầu bằng việc kiểm tra nhật ký lỗi, sau đó lần lượt kiểm tra quyền truy cập tệp, tệp .htaccess, giới hạn bộ nhớ PHP và phiên bản PHP.
✅ Việc duy trì một website khỏe mạnh đòi hỏi sự chú ý đến các chi tiết nhỏ. Hãy nhớ luôn kiểm tra nhật ký lỗi, giữ các quyền tệp chính xác, kiểm tra các thay đổi gần đây và sao lưu website thường xuyên. Nếu bạn không thể tự mình giải quyết, đừng ngần ngại liên hệ với bộ phận hỗ trợ của nhà cung cấp hosting của bạn.
Xem thêm: