Sửa trang
Kiến thức lập trình

Lỗi 500 Internal Server Error là gì? Nguyên nhân, cách khắc phục chi tiết cho người mới

5/5 - (0 Bình chọn )
11/26/2025 12:07:00 AM

Lỗi 500 Internal Server Error là mã phản hồi HTTP báo hiệu sự cố nghiêm trọng từ phía máy chủ khi xử lý yêu cầu, không liên quan đến thiết bị người dùng. Nguyên nhân thường do lỗi cấu hình .htaccess, sai quyền truy cập file, xung đột plugin/theme, lỗi code backend, hoặc server quá tải. Dấu hiệu nhận biết bao gồm thông báo mã 500 trên trình duyệt, website không tải được, log server ghi lỗi cụ thể.

Để khắc phục, cần kiểm tra, sửa file .htaccess, điều chỉnh quyền truy cập, tắt từng plugin/theme, phân tích log lỗi và tăng giới hạn tài nguyên PHP. Khi không tự xử lý được, nên liên hệ bộ phận kỹ thuật. Để phòng tránh, nên thường xuyên backup, cập nhật hệ thống, giám sát log server và kiểm thử plugin/theme trước khi cài đặt.

Lỗi 500 thường xuất phát từ cấu trúc hệ thống không được tổ chức tối ưu, khiến việc xử lý yêu cầu dễ phát sinh xung đột. Khi trang web được xây dựng với kiến trúc rõ ràng, quy trình nạp tài nguyên hợp lý và mã nguồn gọn nhẹ, khả năng gặp lỗi giảm đáng kể. Đây là lý do nhiều doanh nghiệp chú trọng các nguyên tắc thiết kế website để đảm bảo nền tảng vận hành ổn định và dễ bảo trì.

Lỗi 500 Internal Server Error là gì?

Lỗi 500 Internal Server Error là một trạng thái phản hồi chuẩn trong giao thức HTTP, phản ánh việc máy chủ (server) đã phát sinh lỗi không xác định hoặc không lường trước được khi xử lý yêu cầu từ phía client (thường là trình duyệt web). Lỗi này xuất hiện khi máy chủ không thể thực thi hoặc hoàn tất một tác vụ do các nguyên nhân nội bộ, và đồng thời không có mã lỗi cụ thể hơn để thông báo về vấn đề. Đây là loại lỗi phía server (server-side error), hoàn toàn không liên quan đến thiết bị người dùng, mạng internet hoặc trình duyệt.

Lỗi 500 Internal Server Error phản ánh việc máy chủ đã có lỗi không xác định

Cụ thể, khi nhận một request, nếu quá trình thực thi code (PHP, Python, Ruby, Java, Node.js, v.v.), truy vấn cơ sở dữ liệu, hoặc xử lý server-side gặp sự cố như exception không được catch, timeout, thiếu tài nguyên hệ thống hoặc lỗi cấu hình, máy chủ sẽ trả về mã HTTP 500 để báo hiệu có lỗi nội bộ nghiêm trọng nhưng không tiết lộ chi tiết để tránh lộ thông tin nhạy cảm về hệ thống.

Ý nghĩa mã trạng thái HTTP 500

Mã trạng thái HTTP 500 thuộc nhóm mã 5xx, đại diện cho các lỗi xuất phát từ phía máy chủ. Ý nghĩa cốt lõi của mã này bao gồm:

  • Máy chủ đã nhận và hiểu request: Việc trả về 500 chứng tỏ server đã nhận được request và bắt đầu xử lý.

  • Lỗi phát sinh trong quá trình xử lý: Có một sự cố nằm ở phía server, có thể là lỗi logic trong ứng dụng, hỏng file cấu hình, lỗi phân quyền, hoặc trục trặc từ phần mềm nền tảng như Apache, Nginx, IIS.

  • Không tiết lộ nguyên nhân cụ thể: Mã 500 được thiết kế để che giấu chi tiết lỗi. Điều này giúp bảo vệ hệ thống khỏi việc lộ thông tin cấu trúc nội bộ (ví dụ, stack trace, đường dẫn file, đoạn mã nguồn).

Một số đặc điểm chuyên sâu của mã 500:

  • Là mã mặc định khi hệ thống không có mã lỗi chi tiết hơn.

  • Có thể xuất hiện dưới nhiều dạng thông báo: “HTTP 500”, “500 Internal Server Error”, “The server encountered an internal error and was unable to complete your request”,...

  • Các web server phổ biến như Apache, Nginx, LiteSpeed đều có thông báo 500 riêng, nhưng bản chất mã lỗi không thay đổi.

Bảng so sánh các mã lỗi máy chủ thường gặp:

Mã lỗi Ý nghĩa chính Đặc trưng kỹ thuật
500 Lỗi nội bộ máy chủ, không rõ nguyên nhân Lỗi chung, thường do code hoặc config
502 Bad Gateway, proxy nhận phản hồi lỗi Lỗi khi server làm trung gian
503 Service Unavailable, máy chủ quá tải Tạm thời không đáp ứng, do bảo trì/tải lớn
504 Gateway Timeout, hết thời gian phản hồi Lỗi kết nối giữa các server trung gian

Tầm quan trọng của việc hiểu lỗi này với người mới

Việc nắm vững bản chất và quy trình phát sinh lỗi 500 Internal Server Error giúp người mới trong ngành phát triển web, quản trị server hoặc quản lý website có được những lợi ích chuyên sâu sau:

Tác dụng hiểu lỗi 500 với người mới

  • Xác định phạm vi lỗi: Phân biệt rõ lỗi thuộc phía server, loại trừ các nguyên nhân phía client như trình duyệt, cache, thiết bị người dùng hoặc mạng.

  • Hiểu chu trình request-response trong HTTP: Nắm rõ vai trò của web server (Apache, Nginx), ứng dụng backend, database và các tầng trung gian khi xử lý một yêu cầu, từ đó suy luận nguyên nhân phát sinh lỗi 500.

  • Định hướng kiểm tra và khắc phục khoa học: Biết ưu tiên kiểm tra log server (error.log, access.log), file cấu hình (.htaccess, nginx.conf), quyền truy cập file/folder, giới hạn tài nguyên (memory_limit, max_execution_time), hoặc version/extension của runtime (PHP, Node.js).

  • Tối ưu hóa giao tiếp với đội kỹ thuật: Có thể mô tả chi tiết tình trạng gặp phải, gửi kèm thông tin mã lỗi, thời điểm, URL, phương thức request (GET, POST,...) để hỗ trợ quá trình troubleshooting và xử lý sự cố.

  • Hiểu tác động tới SEO và trải nghiệm người dùng: Lỗi 500 kéo dài hoặc lặp lại sẽ khiến trang web bị đánh giá tiêu cực bởi Google (tăng tỷ lệ crawl error), ảnh hưởng trực tiếp đến thứ hạng tìm kiếm cũng như trải nghiệm truy cập. Hiểu tác động của lỗi 500 đến SEO giúp người mới nhận thức được tầm quan trọng của sự ổn định hệ thống. Khi trang web không đảm bảo tiêu chuẩn kỹ thuật, công cụ tìm kiếm có thể giảm tần suất thu thập dữ liệu. Nhờ áp dụng phương pháp thiết kế website chuẩn SEO, website tăng tốc độ phản hồi, giảm sự cố nghiêm trọng và giữ trải nghiệm người dùng nhất quán, tạo lợi thế dài hạn trong thứ hạng tìm kiếm.

Các năng lực cần thiết để xử lý và phòng tránh lỗi 500 cho người mới:

  • Đọc hiểu log hệ thống và log ứng dụng.

  • Nắm vững cơ chế phân quyền, quản lý file/folder trên server.

  • Hiểu về cấu trúc và vai trò của các file cấu hình dịch vụ web.

  • Có khả năng truy cập và thao tác với môi trường server (cPanel, SSH, FTP, SFTP,...).

  • Biết sử dụng công cụ kiểm thử request như Postman, curl, devtools trên trình duyệt để phân tích response headers, status code.

Việc trang bị kiến thức vững chắc về lỗi 500 là nền tảng để phát triển kỹ năng vận hành và bảo trì website an toàn, ổn định, đáp ứng chuẩn EEAT trong quản trị và phát triển hệ thống web hiện đại.

Nguyên nhân phổ biến gây ra lỗi 500 Internal Server Error

Lỗi này xuất phát chủ yếu từ các vấn đề cấu hình hệ thống, sai lệch quyền truy cập file/thư mục, lỗi cú pháp hoặc logic trong mã nguồn (đặc biệt là PHP, script backend), plugin hoặc theme xung đột, sự cố kết nối cơ sở dữ liệu, quá tải tài nguyên hosting/server hoặc lỗi cấu hình web server (Apache, Nginx, PHP). Việc xác định và khắc phục chính xác nguyên nhân cần dựa vào log máy chủ và kiểm tra lần lượt từng yếu tố kỹ thuật liên quan.

Lỗi file .htaccess

File .htaccess là tập tin cấu hình cho máy chủ Apache, dùng để kiểm soát cách server xử lý các request HTTP. Theo tài liệu chính thức của Apache HTTP Server, file .htaccess là nguyên nhân phổ biến gây ra lỗi 500 Internal Server Error. Các lỗi cú pháp trong .htaccess không chỉ gây ra lỗi 500 mà còn ảnh hưởng đến hiệu suất máy chủ do việc phân tích lặp lại. Việc sử dụng mẫu RewriteRule không đúng có thể tạo ra vòng lặp vô hạn, dẫn tới cạn kiệt tài nguyên và lỗi 500 nghiêm trọng. 

Lỗi File .htaccess là nguyên nhân phổ biến gây ra lỗi 500 internal server error

Lỗi thường xuất phát từ:

  • Cú pháp sai: Ví dụ, thiếu hoặc thừa ký tự, sử dụng chỉ thị không được hỗ trợ, sai quy tắc RewriteRule, thiếu RewriteEngine On trước khi dùng rewrite.

  • Khai báo module không hợp lệ: Chỉ thị yêu cầu module chưa được bật, như mod_rewrite, mod_headers.

  • Chỉ dẫn Redirect lỗi: Vòng lặp chuyển hướng, thiếu URL đích hoặc trỏ về chính nó.

  • Thao tác tệp bị mã độc hoặc tool tự động chèn dòng lệnh lạ: Dẫn đến server từ chối xử lý vì phát hiện bất thường.

  • Nội dung xung đột giữa nhiều file .htaccess: Đặc biệt ở hệ thống thư mục lồng nhau.

Để xác định lỗi, thường kiểm tra log error của Apache, sử dụng công cụ kiểm tra cú pháp hoặc tạm thời đổi tên file .htaccess để loại trừ nguyên nhân.

Sai quyền truy cập file/thư mục

Quyền truy cập (permissions) và chủ sở hữu (ownership) kiểm soát khả năng đọc, ghi, thực thi của các tệp và thư mục trên server Linux:

Sai quyền truy cập File/ thư mục gây lỗi 500

  • Sai permission:

    • File PHP thường là 644 (rw-r--r--), thư mục là 755 (rwxr-xr-x).

    • Phân quyền quá rộng như 777 gây rủi ro bảo mật và server từ chối xử lý để bảo vệ hệ thống.

    • Phân quyền quá hạn chế như 600 hoặc chỉ có quyền cho root khiến web server không thể truy cập.

  • Sai ownership:

    • File, thư mục cần thuộc user mà tiến trình web server chạy (thường là www-data, apache, nginx).

    • Đổi user không đúng gây lỗi “Permission denied”.

Có thể liệt kê quyền và chủ sở hữu bằng lệnh ls -l. Khi sửa, dùng lệnh chmodchown chuẩn xác theo từng loại tệp/thư mục.

Lỗi code PHP hoặc script máy chủ

Code backend gây lỗi 500 thường xuất phát từ:

  • Lỗi cú pháp (Parse error): Quên dấu ;, đóng ngoặc không đúng, sử dụng biến chưa định nghĩa.

  • Gọi hàm không tồn tại: Tải thiếu file, autoload không đúng, namespace sai.

  • Vòng lặp vô tận, recursion không kiểm soát: Làm cạn kiệt stack hoặc memory server.

  • Exception không được bắt: Dẫn tới fatal error, đặc biệt khi tắt display error trên production.

  • Kết nối tài nguyên ngoài (API, file, socket) thất bại: Không kiểm soát trạng thái trả về.

  • Lỗi truy vấn CSDL: Syntax sai, gọi hàm PHP lỗi thời (mysql_query thay vì mysqli_query/PDO), query trả về lỗi.

  • Xung đột hoặc trùng lặp khai báo hàm/lớp: Gặp nhiều khi include/requite file động.

  • Thiếu extension PHP: Ví dụ, sử dụng mbstring, gd, intl nhưng server chưa bật extension.

Lỗi 500 do Code PHP hoặc Script máy chủ

Debug nên bật chế độ log lỗi (error_reporting, display_errors) hoặc kiểm tra error_log. 

Theo tài liệu chính thức của PHP.net, lỗi phân tích cú pháp (Parse error) là một trong những nguyên nhân chính gây ra lỗi 500 trong ứng dụng PHP. Lỗi cạn kiệt bộ nhớ thường xảy ra khi memory_limit của PHP được đặt quá thấp cho các ứng dụng hiện đại. Việc sử dụng các hàm đã bị loại bỏ (deprecated functions) trong các phiên bản PHP mới có thể tạo ra lỗi nghiêm trọng (fatal errors) dẫn đến lỗi 500.

Quá tải tài nguyên hosting/server

Server sẽ trả về lỗi 500 khi vượt ngưỡng tài nguyên cho phép do:

  • CPU/RAM: Kịch trần sử dụng, website hoặc script chạy nặng (backup, import dữ liệu, xuất báo cáo lớn).

  • Giới hạn số lượng process/PHP worker: Shared hosting thường giới hạn số concurrent process, khi vượt ngưỡng các request sẽ bị từ chối.

  • Giới hạn IOPS hoặc inode: Quá nhiều file nhỏ, hoặc hệ thống file bị đầy, khiến server không ghi/đọc được file mới.

  • Script chạy nền chiếm tài nguyên (cronjob, task queue): Chạy quá lâu mà không chia nhỏ batch hoặc không xử lý tối ưu.

Tài nguyên Server/hosting vượt ngưỡng

Có thể kiểm tra tài nguyên qua top, htop, hoặc trang quản trị hosting/cPanel. Tối ưu script, tăng cấu hình, hoặc chuyển hosting là giải pháp.

Lỗi plugin/theme (WordPress/CMS)

Plugin hoặc theme có thể gây lỗi 500 do:

  • Không tương thích core: Plugin/theme chưa cập nhật hoặc không tương thích phiên bản CMS hoặc PHP đang sử dụng. Theo báo cáo State of WordPress Security 2024 của Patchstack, plugins chiếm 97% tổng số lỗ hổng bảo mật mới được phát hiện trong hệ sinh thái WordPress. Nghiên cứu cho thấy plugins không được cập nhật thường xuyên có khả năng gây xung đột và lỗi 500 cao hơn đáng kể so với plugins được duy trì thường xuyên. Cross-Site Scripting (XSS) chiếm 53,3% các lỗ hổng bảo mật mới, nhiều trường hợp trong số đó có thể dẫn tới lỗi 500 khi bị khai thác.

  • Xung đột giữa các plugin: Hook, filter, event trùng lặp hoặc ghi đè chức năng nhau.

  • Lỗi trong code plugin/theme: Fatal error, gọi hàm không tồn tại, query dữ liệu quá nặng.

  • Cập nhật dở dang: Plugin/theme bị lỗi khi cập nhật, mất file, thiếu thư mục, hoặc file upload chưa hoàn tất.

  • Plugin/theme bị nhiễm mã độc: Gắn shell, script lạ, phá vỡ quá trình xử lý.

  • Tăng tải truy vấn: Một số plugin SEO, backup, thống kê có thể tạo truy vấn quá nặng cho database.

Lỗi 500 do Plugin/theme của Wordpress/CMS không tương thích

Phát hiện lỗi thường qua log hoặc thử vô hiệu hóa từng plugin/theme bằng FTP hoặc quản trị hosting.

Lỗi kết nối cơ sở dữ liệu

Các nguyên nhân chính gồm:

  • Sai thông tin cấu hình: Host, username, password, port hoặc tên database khai báo sai trong file cấu hình ứng dụng (wp-config.php, .env...).

  • Database server ngừng hoạt động: Dịch vụ MySQL/MariaDB/PostgreSQL bị dừng, hoặc restart chưa xong.

  • Quá giới hạn kết nối: Cài đặt max_connections bị vượt quá (đặc biệt trên shared hosting).

  • Lỗi phân quyền user database: User thiếu quyền SELECT, INSERT, UPDATE, DELETE hoặc LOCK TABLE.

  • Bảng bị crash/corrupt: Ví dụ: lỗi Table './db_name/table_name' is marked as crashed.

  • Database hết dung lượng: Ổ cứng đầy hoặc database limit.

  • Query lock: Truy vấn chưa commit/rollback khiến các kết nối mới bị treo hoặc timeout.

Kết nối cơ sở dữ liệu gây lỗi 500

Kiểm tra bằng log database, truy cập trực tiếp bằng công cụ quản trị (phpMyAdmin, Adminer, CLI).

Cấu hình server sai (Apache/Nginx, PHP)

Một số vấn đề cấu hình phổ biến:

  • Sai cấu hình file httpd.conf, .htaccess, nginx.conf, hoặc block vhost: Cú pháp lỗi, cấu hình rewrite không hợp lệ, trùng lặp hoặc xung đột rule.

  • Khai báo thiếu hoặc sai module: Apache thiếu module mod_rewrite, Nginx thiếu fastcgi, PHP thiếu extension.

  • PHP-FPM không hoạt động hoặc không kết nối được tới web server: Socket hoặc port khai báo không đúng.

  • Giới hạn PHP không phù hợp: memory_limit, post_max_size, upload_max_filesize, max_execution_time quá thấp khiến script lớn bị dừng đột ngột.

  • Sai version PHP: Sử dụng plugin, function mới trên PHP cũ hoặc ngược lại.

  • Chưa reload/restart dịch vụ sau khi thay đổi cấu hình: Server dùng cấu hình cũ.

  • Cấu hình proxy ngược (reverse proxy) hoặc CDN sai: Proxy header, SSL, forwarding, dẫn đến server trả về lỗi khi request không hợp lệ.

Cấu hình server sai file .htaccess

Bảng tổng hợp một số giá trị cấu hình cần kiểm tra:

Thành phần File cấu hình Thông số cần kiểm tra
Apache httpd.conf, .htaccess AllowOverride, RewriteEngine
Nginx nginx.conf, sites-available location, proxy_pass, root
PHP php.ini memory_limit, max_execution_time
PHP-FPM www.conf listen, user, group

Kiểm tra lỗi bằng file log: /var/log/apache2/error.log, /var/log/nginx/error.log, /var/log/php-fpm.log.

Dấu hiệu nhận biết lỗi 500 Internal Server Error

Dấu hiệu nhận biết lỗi 500 Internal Server Error thường thể hiện qua ba khía cạnh chính: thông báo mã lỗi trên trình duyệt với các biến thể như “500 Internal Server Error” hoặc “HTTP 500”, tình trạng không thể truy cập website hoặc một số chức năng nhất định bị gián đoạn, và các thông tin cảnh báo chi tiết trong log server hoặc hosting. Log này cung cấp dữ liệu chuyên sâu về nguyên nhân lỗi, vị trí file hoặc script gặp sự cố, cũng như thông báo lỗi từ hệ thống hoặc ứng dụng web. Việc phân tích các dấu hiệu này giúp phát hiện, khoanh vùng và xử lý kịp thời các vấn đề phát sinh từ máy chủ.

Thông báo lỗi trên trình duyệt

Khi gặp lỗi 500 Internal Server Error, trình duyệt trả về trang thông báo mã lỗi HTTP 500 với nhiều định dạng khác nhau tùy vào server hoặc ứng dụng web. 

500 Internal Server Error thông báo trình duyệt

Một số biểu hiện phổ biến:

  • Dòng chữ “500 Internal Server Error” xuất hiện lớn, nổi bật giữa màn hình.

  • Một số hệ thống trả về thông điệp chi tiết hơn, ví dụ:

    • “The server encountered an internal error or misconfiguration and was unable to complete your request.”

    • “HTTP 500 – Internal Server Error”

    • “500. That’s an error.”

  • Một số trang chỉ trả về mã lỗi 500 mà không có nội dung HTML hoặc giao diện.

  • Đối với ứng dụng API hoặc RESTful, phản hồi là JSON hoặc XML có chứa trường "status": 500 hoặc "error": "Internal Server Error".

Các trường hợp trả về mã lỗi 500 này đều thể hiện rằng truy vấn đến web server đã bị dừng bởi lỗi xử lý nội bộ, không phải do phía người dùng hoặc trình duyệt.

Không truy cập được website

Lỗi 500 thường làm gián đoạn hoàn toàn quá trình tải trang hoặc chỉ ảnh hưởng đến một số chức năng, tùy mức độ nghiêm trọng và vị trí lỗi trong hệ thống:

Lỗi 500 Server Error làm gián đoạn truy cập website

  • Trang web không tải được nội dung, chỉ xuất hiện thông báo lỗi thay cho mọi thành phần giao diện người dùng.

  • Các thao tác như đăng nhập, gửi form, upload file bị trả về thông báo lỗi 500, kể cả khi các trang tĩnh khác vẫn truy cập bình thường.

  • Nếu website sử dụng hệ thống quản lý nội dung (CMS) như WordPress, Joomla, lỗi có thể xuất hiện ở trang quản trị, trang bài viết, hoặc từng plugin riêng biệt.

  • Khi thực hiện kiểm thử bằng công cụ như Postman hoặc cURL, response HTTP trả về code 500, header có thể chứa thêm thông tin liên quan đến loại web server (Apache, Nginx, LiteSpeed) và mô tả ngắn gọn lỗi.

  • Ở các ứng dụng có nhiều máy chủ (cluster, load balancing), lỗi 500 có thể chỉ xuất hiện ở một số node nhất định, gây ra tình trạng gián đoạn cục bộ.

Log lỗi trong hosting/server

Log server là nơi lưu trữ toàn bộ thông tin liên quan đến hoạt động của hệ thống web. Dấu hiệu lỗi 500 có thể phát hiện ở nhiều cấp độ log khác nhau, mỗi cấp độ cung cấp thông tin chi tiết để xác định nguyên nhân gốc rễ:

Thông báo lỗi 500 trong file log của hosting/server

1. Log truy cập (access log):

  • Ghi nhận các truy vấn đến server kèm theo mã phản hồi HTTP.

  • Dòng log điển hình:

    192.168.1.1 - - [25/Jul/2025:15:30:02 +0700] "GET /index.php HTTP/1.1" 500 982 "-"
    
  • Số lượng truy vấn trả về 500 tăng đột biến báo hiệu hệ thống gặp sự cố diện rộng.

2. Log lỗi ứng dụng (error log):

  • Ghi nhận chi tiết nguyên nhân lỗi phát sinh bên trong web server hoặc ứng dụng.

  • Thông tin bao gồm:

    • Thời gian phát sinh lỗi.

    • Đường dẫn file/script bị lỗi.

    • Stack trace (dòng lệnh gây lỗi).

    • Loại lỗi (ví dụ: PHP Fatal error, Uncaught Exception, Segmentation fault).

    • Thông báo lỗi liên quan đến quyền truy cập file, thiếu file cấu hình, lỗi cú pháp.

  • Ví dụ log Apache:

    [Fri Jul 25 15:30:02.123456 2025] [php7:error] [pid 2210] [client 192.168.1.1:53428] PHP Fatal error:  Uncaught Error: Call to undefined function get_user() in /home/user/public_html/index.php:20
    

3. Log hệ thống và dịch vụ liên quan:

  • Ghi nhận các sự kiện về tài nguyên server như hết RAM, full disk, service crash.

  • Ở môi trường cloud/virtual host, log của container hoặc process manager (systemd, supervisor) có thể ghi nhận các restart không mong muốn do lỗi 500.

  • Dòng log điển hình:

    Out of memory: Kill process 2210 (php-fpm) score 912 or sacrifice child
    

4. Log lỗi của ứng dụng bên thứ ba:

  • Nếu website sử dụng framework, CMS, hoặc plugin/module, các log riêng của từng thành phần này sẽ ghi lại nguyên nhân cụ thể (ví dụ: lỗi truy vấn database, lỗi call API, lỗi tương thích plugin).

  • Ví dụ WordPress debug.log:

    PHP Fatal error:  Maximum execution time of 30 seconds exceeded in /home/user/public_html/wp-content/plugins/example-plugin/main.php on line 45
    

Các trường hợp log đặc biệt cần chú ý:

  • Lỗi phân quyền file hoặc thư mục trên hosting/server: Permission denied, Unable to open file for reading.

  • Lỗi do giới hạn tài nguyên (CPU, RAM, I/O): Resource temporarily unavailable, Cannot allocate memory.

  • Lỗi do cấu hình web server sai (ví dụ .htaccess, nginx.conf): RewriteRule: bad flag delimiters, Invalid command 'php_value'.

  • Lỗi khi giao tiếp với backend hoặc microservice khác: 502 Bad Gateway, Connection refused, Timeout.

Bảng tổng hợp vị trí log thường gặp:

Thành phần Đường dẫn log phổ biến
Apache HTTPD /var/log/apache2/error.log
Nginx /var/log/nginx/error.log
PHP-FPM /var/log/php7.4-fpm.log
Application (Laravel) storage/logs/laravel.log
WordPress wp-content/debug.log
Hệ điều hành /var/log/syslog (Ubuntu), /var/log/messages (CentOS)

Các dấu hiệu trên cho phép xác định chính xác nguyên nhân và phạm vi ảnh hưởng của lỗi 500 Internal Server Error để có hướng xử lý phù hợp.

Cách khắc phục lỗi 500 Internal Server Error cho người mới

Nguyên nhân thường liên quan đến sai sót file .htaccess, phân quyền file/thư mục không đúng, plugin hoặc theme xung đột, giới hạn tài nguyên PHP hoặc mã nguồn lỗi. Để khắc phục, người quản trị cần kiểm tra và sửa file .htaccess, điều chỉnh quyền truy cập, tắt từng plugin/theme, phân tích log lỗi server, tăng giới hạn PHP, rà soát lại mã nguồn, phục hồi bản backup hoặc liên hệ hỗ trợ kỹ thuật từ nhà cung cấp hosting/server. Xử lý kịp thời giúp website vận hành ổn định và an toàn.

8 phương pháp hạn chế lỗi 500

Kiểm tra, sửa file .htaccess

File .htaccess đóng vai trò kiểm soát cấu hình truy cập, rewrite URL và bảo mật cho website. Sai sót nhỏ trong file này cũng có thể khiến toàn bộ website báo lỗi 500.

  • Truy cập thư mục gốc website qua FTP/SFTP hoặc File Manager của hosting.

  • Đối với website WordPress, file .htaccess thường nằm ở public_html hoặc www.

  • Đổi tên file .htaccess thành .htaccess_bak để vô hiệu hóa tạm thời. Truy cập lại website.

    • Nếu website hoạt động bình thường, file này là nguyên nhân.

  • Tạo file .htaccess mới. Với WordPress, truy cập Bảng điều khiển > Cài đặt > Đường dẫn tĩnh > Lưu thay đổi, hệ thống sẽ tự động sinh file chuẩn.

  • Kiểm tra cấu hình, loại bỏ các rule không cần thiết, đảm bảo không có lỗi cú pháp như thiếu RewriteEngine On, thiếu dấu kết thúc hoặc lặp rule.

  • Một số lỗi phổ biến:

    • RewriteBase không đúng: Đảm bảo đúng đường dẫn thư mục cài đặt.

    • Quy tắc redirect vòng lặp: Kiểm tra xem có quy tắc chuyển hướng không hợp lệ không.

Ví dụ file .htaccess chuẩn cho WordPress:

# BEGIN WordPress
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
# END WordPress

Kiểm tra quyền truy cập file/thư mục

Quyền truy cập không đúng chuẩn khiến webserver không thể đọc file hoặc thực thi mã nguồn, đây là nguyên nhân phổ biến gây lỗi 500 trên cả môi trường shared hosting lẫn VPS/server riêng.

  • Sai quyền truy cập (permission) khiến webserver không đọc được file, gây lỗi 500.

  • Sử dụng lệnh SSH:

    • Xem quyền: ls -l

    • Đặt quyền thư mục: find . -type d -exec chmod 755 {} \;

    • Đặt quyền file: find . -type f -exec chmod 644 {} \;

  • Trên File Manager/FTP: Chuột phải > Change Permission/Set Permission.

  • Không đặt quyền 777 cho file/thư mục để tránh rủi ro bảo mật.

  • Đảm bảo tài khoản chạy webserver (thường là www-data, apache, hoặc nginx) có quyền đọc và thực thi.

Đối tượng Quyền đề xuất
Thư mục 755
File 644
.htaccess 644

Tắt/mở từng plugin hoặc theme

Plugin hoặc theme lỗi, xung đột, hoặc không tương thích với phiên bản nền tảng/PHP có thể khiến website không thể load và trả về lỗi 500 Internal Server Error.

Đối với WordPress:

  • Vào wp-content, đổi tên thư mục plugins thành plugins_off để vô hiệu hóa tất cả plugin.

  • Nếu website chạy lại, lỗi xuất phát từ plugin. Đổi lại tên plugins, lần lượt đổi tên từng thư mục plugin để xác định plugin gây lỗi.

  • Nếu nghi ngờ theme: đổi tên thư mục theme đang sử dụng, WordPress sẽ tự chuyển về theme mặc định (Twenty Twenty-One hoặc tương tự).

  • Với các CMS khác: thao tác tương tự trên thư mục extension/module/addon.

  • Lỗi thường gặp ở plugin/theme không tương thích phiên bản PHP, xung đột hook, hoặc truy cập tài nguyên không tồn tại.

Kiểm tra log lỗi server

Log lỗi server ghi lại toàn bộ thông tin chi tiết quá trình xử lý truy cập, giúp xác định chính xác nguyên nhân gây lỗi 500 và vị trí phát sinh lỗi trong hệ thống.

  • Truy cập File Manager hoặc SSH, kiểm tra các file log:

    • Apache: /var/log/apache2/error.log

    • Nginx: /var/log/nginx/error.log

    • Hosting cPanel/DirectAdmin: Thư mục logs hoặc error_log ở gốc website.

  • Tìm kiếm theo thời gian phát sinh lỗi hoặc keyword “500”, “Fatal error”, “Uncaught Exception”.

  • Phân tích log:

    • Nếu báo lỗi về script cụ thể, kiểm tra đoạn code, dòng báo lỗi.

    • Nếu lỗi thiếu file hoặc thư viện, kiểm tra lại quá trình cập nhật/cài đặt.

    • Nếu lỗi PHP Fatal error, thường liên quan đến giới hạn bộ nhớ, hàm bị cấm, hoặc lỗi logic trong code.

Ví dụ lỗi log:

[Thu Jul 25 10:10:32 2025] [error] [client 192.168.1.2] PHP Fatal error:  Allowed memory size of 134217728 bytes exhausted

→ Cần tăng giới hạn bộ nhớ PHP.

Tăng giới hạn tài nguyên PHP

Lỗi 500 có thể phát sinh khi website sử dụng vượt quá tài nguyên PHP được cấp phát, đặc biệt trên hosting giới hạn thấp hoặc website có lượng truy cập lớn, nhiều plugin.

  • Để xử lý lỗi vượt quá memory_limit, max_execution_time, upload_max_filesize, thực hiện một trong các cách:

    • Chỉnh file php.ini:

      memory_limit = 256M
      max_execution_time = 300
      upload_max_filesize = 64M
      post_max_size = 64M
      
    • Nếu không có quyền truy cập php.ini, thêm vào .htaccess:

      php_value memory_limit 256M
      php_value max_execution_time 300
      php_value upload_max_filesize 64M
      
    • Hoặc thêm vào wp-config.php (WordPress):

      define('WP_MEMORY_LIMIT', '256M');
      
  • Sau khi chỉnh sửa, kiểm tra lại website và log lỗi để xác nhận đã hết lỗi vượt ngưỡng tài nguyên.

Kiểm tra, sửa mã nguồn website

Các thay đổi không kiểm soát trong mã nguồn, cập nhật hoặc chỉnh sửa code không tương thích, có thể gây ra lỗi nghiêm trọng khiến server không thể thực thi script.

  • Rà soát các thay đổi gần đây trong mã nguồn (file core, plugin, theme).

  • Sử dụng công cụ kiểm tra phiên bản code như GIT, hoặc plugin chuyên dụng (WP Rollback, VersionPress).

  • Đối với lỗi syntax hoặc fatal error:

    • Soát lại file/dòng báo lỗi trong log, sửa cú pháp hoặc khôi phục bản code ổn định.

    • Đảm bảo mã nguồn tương thích với phiên bản PHP đang sử dụng (ví dụ, các hàm deprecated sẽ gây lỗi khi nâng PHP).

  • Nếu sử dụng mã nguồn mở, tải lại các file gốc từ nhà phát triển để thay thế file nghi ngờ bị lỗi hoặc chỉnh sửa sai.

Khôi phục bản sao lưu gần nhất

Khi không thể xác định hoặc xử lý được nguyên nhân, khôi phục lại bản backup là giải pháp nhanh nhất để đưa website về trạng thái hoạt động ổn định.

  • Truy cập công cụ backup của hosting (JetBackup, Acronis, R1Soft...) hoặc plugin backup (UpdraftPlus, BackupBuddy...).

  • Lựa chọn thời điểm backup gần nhất trước khi xảy ra lỗi, tiến hành khôi phục toàn bộ website (file + database) hoặc từng phần.

  • Sau khi phục hồi, kiểm tra hoạt động website, rà lại các thay đổi gần đây để tránh lặp lại nguyên nhân gây lỗi.

Liên hệ kỹ thuật hosting/server

Một số trường hợp lỗi 500 xuất phát từ cấu hình máy chủ hoặc sự cố ở tầng hạ tầng, cần sự hỗ trợ từ đội ngũ kỹ thuật của nhà cung cấp hosting/server để xử lý triệt để.

  • Gửi ticket, email hoặc liên hệ trực tiếp bộ phận kỹ thuật của nhà cung cấp dịch vụ hosting/server.

  • Cung cấp chi tiết:

    • Thời điểm xảy ra lỗi.

    • Toàn bộ thông báo lỗi, ảnh chụp màn hình, file log.

    • Các thao tác đã thực hiện khắc phục.

  • Kỹ thuật viên sẽ kiểm tra các vấn đề sâu hơn: cấu hình server, lỗi phần cứng, hạn mức tài nguyên hoặc các lỗi không thuộc phạm vi quản trị web thông thường.

Cách phòng tránh lỗi 500 Internal Server Error

ChatGPT đã nói:

Để phòng tránh lỗi 500 Internal Server Error, cần duy trì các biện pháp quản trị hệ thống chặt chẽ và chủ động. Đầu tiên, việc cập nhật định kỳ các thành phần website kết hợp với backup tự động giúp bảo vệ dữ liệu trước mọi rủi ro. Tiếp theo, lựa chọn plugin, theme uy tín, kiểm thử trước khi sử dụng, đồng thời loại bỏ những thành phần không cần thiết là cách giảm xung đột hệ thống. Việc giám sát log lỗi server định kỳ giúp phát hiện sớm các bất thường để xử lý kịp thời. Đặc biệt, chỉ nên can thiệp vào các file cấu hình khi đã hiểu rõ chức năng, đảm bảo mọi thao tác đều dựa trên kiến thức chuyên môn vững chắc.

Cập nhật và backup thường xuyên

Đảm bảo môi trường website luôn sử dụng các phiên bản mới nhất của hệ điều hành, phần mềm máy chủ (Apache, Nginx), PHP, MySQL, CMS (WordPress, Joomla...), plugin và theme. Các bản cập nhật thường bao gồm vá lỗi bảo mật, khắc phục các lỗ hổng có thể bị khai thác dẫn tới lỗi 500 Internal Server Error.
Các bước cần thực hiện:

  • Xây dựng quy trình cập nhật định kỳ, kiểm tra thông báo từ nhà phát triển, không trì hoãn các bản vá bảo mật.

  • Trước khi cập nhật, cần backup đầy đủ dữ liệu và toàn bộ mã nguồn để có thể khôi phục khi xảy ra sự cố.

  • Nên sử dụng giải pháp backup tự động (plugin backup, script cron job) lưu trữ ở nhiều vị trí: máy chủ khác, cloud, hoặc ổ cứng ngoại vi.

  • Thường xuyên kiểm tra tính toàn vẹn của các bản backup để đảm bảo dữ liệu có thể phục hồi thành công.

Lưu ý: Không backup trong cùng máy chủ với website chính, tránh rủi ro khi server gặp lỗi nghiêm trọng.

Kiểm tra plugin/theme trước khi cài đặt

Plugin và theme là nguyên nhân phổ biến gây xung đột, dẫn đến lỗi 500 Internal Server Error. Việc kiểm tra kỹ lưỡng trước khi cài đặt giúp loại trừ nguy cơ này.

  • Chỉ cài plugin/theme từ các nguồn uy tín như kho chính thức (WordPress.org, ThemeForest...) hoặc nhà phát triển có cam kết bảo trì dài hạn.

  • Đọc kỹ đánh giá, lịch sử cập nhật, mức độ tương thích với phiên bản CMS đang sử dụng.

  • Thử nghiệm plugin/theme mới trên môi trường staging hoặc local trước khi triển khai thực tế.

  • Khi cài đặt hoặc cập nhật, cần kiểm tra lại toàn bộ chức năng website, đặc biệt các tính năng quan trọng như đăng nhập, đặt hàng, gửi liên hệ…

  • Gỡ bỏ ngay các plugin/theme không cần thiết hoặc đã lỗi thời, tránh để mã độc tiềm ẩn hoặc xung đột không mong muốn.

Ví dụ kiểm tra plugin trước khi sử dụng:

Tiêu chí Thực hiện kiểm tra
Nguồn Từ kho chính thức hoặc nhà phát triển uy tín
Đánh giá Đọc review, rating, phản hồi của cộng đồng
Cập nhật Xem lịch sử và tần suất cập nhật
Tương thích Kiểm tra thông tin compatibility với CMS, PHP
Mã nguồn Nếu có thể, rà soát code hoặc sử dụng các plugin kiểm tra bảo mật

Giám sát log lỗi server định kỳ

Log máy chủ ghi lại toàn bộ hoạt động và lỗi phát sinh trong quá trình xử lý request. Chủ động giám sát log giúp phát hiện sớm các dấu hiệu bất thường.

  • Định kỳ kiểm tra file error_log (với Apache), nginx/error.log, hoặc log ứng dụng trên hosting control panel.

  • Đặt cảnh báo (alert) tự động khi xuất hiện các lỗi nghiêm trọng (HTTP 500, segfault, memory exhausted…).

  • Lưu trữ log ít nhất 30 ngày để có thể tra cứu lịch sử sự cố.

  • Khi xuất hiện lỗi 500, đọc chi tiết từng dòng log để xác định nguyên nhân: thiếu bộ nhớ, lỗi file .htaccess, quyền truy cập thư mục/file, lỗi kết nối database, syntax error trong code.

  • Sử dụng các công cụ chuyên dụng như Logwatch, Splunk, hoặc plugin quản lý log của CMS để thống kê, phân loại và cảnh báo theo thời gian thực.

Liệt kê các lỗi thường gặp trong log dẫn đến lỗi 500:

  • PHP Fatal error: Allowed memory size exhausted

  • AH00124: Request exceeded the limit of 10 internal redirects

  • FastCGI: incomplete headers

  • permission denied

Không chỉnh sửa file cấu hình khi chưa rõ

Các file cấu hình như .htaccess (Apache), nginx.conf, php.ini, wp-config.php kiểm soát các tham số quan trọng của máy chủ và ứng dụng web. Sai sót nhỏ cũng có thể dẫn đến lỗi 500 Internal Server Error, thậm chí làm gián đoạn toàn bộ website.

  • Tuyệt đối không chỉnh sửa trực tiếp file cấu hình trên server thật khi chưa hiểu rõ chức năng, cú pháp và hậu quả của từng dòng lệnh.

  • Luôn sao lưu file cấu hình trước khi thay đổi.

  • Nên thử nghiệm các thay đổi trên môi trường local hoặc staging, xác nhận hoạt động ổn định rồi mới áp dụng lên hệ thống chính.

  • Khi buộc phải sửa trực tiếp, kiểm tra lỗi syntax bằng lệnh kiểm tra của từng dịch vụ:

    • apachectl configtest (Apache)

    • nginx -t (Nginx)

    • Kiểm tra error log ngay sau khi lưu file cấu hình.

  • Tham khảo tài liệu chính thức, hướng dẫn từ nhà cung cấp dịch vụ hoặc hỏi ý kiến chuyên gia hệ thống trước khi thực hiện các thay đổi phức tạp.

Các lỗi phổ biến khi chỉnh sửa file cấu hình:

  • Lỗi rewrite rule trong .htaccess

  • Sai path file/folder trong cấu hình

  • Đặt giá trị cấu hình không tương thích với phiên bản phần mềm

  • Phân quyền file cấu hình không đúng (quyền 777 hoặc 600 không hợp lý)

Việc thực hiện nghiêm túc các quy trình này giúp giảm thiểu tối đa nguy cơ phát sinh lỗi 500 Internal Server Error và đảm bảo hệ thống vận hành ổn định, an toàn.

FAQ – Câu hỏi thường gặp về lỗi 500 Internal Server Error

Câu hỏi thường gặp về lỗi 500 Internal Server Error thường xoay quanh sự khác biệt giữa lỗi 500 và các mã lỗi HTTP khác, tần suất kiểm tra log lỗi và thời điểm cần liên hệ kỹ thuật. Lỗi 500 là lỗi phía máy chủ, thường do các vấn đề nội bộ không xác định rõ nguyên nhân, khác biệt với các lỗi do phía người dùng hay cấu hình truy cập. Để đảm bảo hệ thống ổn định, nên kiểm tra log định kỳ và kịp thời xử lý sự cố phát sinh. Khi lỗi không thể khắc phục bằng các biện pháp cơ bản hoặc có dấu hiệu phức tạp, liên hệ bộ phận kỹ thuật là giải pháp an toàn, giúp giảm thiểu rủi ro và bảo vệ website.

Lỗi 500 khác gì lỗi HTTP khác?

Có.
Lỗi 500 Internal Server Error là lỗi phía máy chủ (server-side), báo hiệu server gặp sự cố không xác định được cụ thể trong quá trình xử lý yêu cầu. Khác với các lỗi HTTP khác như 404 (Not Found – tài nguyên không tồn tại), 403 (Forbidden – bị từ chối truy cập), hay 400 (Bad Request – cú pháp yêu cầu sai), lỗi 500 không chỉ ra nguyên nhân rõ ràng cho người dùng hoặc trình duyệt.
Lỗi này thường do lập trình ứng dụng, máy chủ web, hoặc cấu hình server phát sinh vấn đề nội bộ, ví dụ: lỗi trong file .htaccess, quyền truy cập file sai, server quá tải, hoặc dịch vụ nền bị crash.
Điểm khác biệt lớn nhất là lỗi 500 luôn là lỗi phía máy chủ, thường đòi hỏi can thiệp kỹ thuật từ quản trị viên hoặc lập trình viên thay vì chỉnh sửa từ phía người dùng.

Bao lâu nên kiểm tra log lỗi?

Nên kiểm tra log lỗi ngay khi phát hiện dấu hiệu bất thường hoặc xuất hiện lỗi 500.
Việc kiểm tra log nên thực hiện thường xuyên đối với các hệ thống website hoặc ứng dụng đang vận hành liên tục, đặc biệt khi triển khai code mới, cập nhật cấu hình, hoặc khi server có lượng truy cập lớn.
Trong môi trường sản xuất (production), kiểm tra log định kỳ ít nhất mỗi ngày giúp phát hiện sớm sự cố, giảm thiểu downtime. Với các website doanh nghiệp, nên triển khai cảnh báo tự động khi xuất hiện lỗi 500 để xử lý kịp thời, đảm bảo trải nghiệm người dùng và an toàn dữ liệu.

Khi nào cần liên hệ kỹ thuật?

Cần liên hệ bộ phận kỹ thuật hoặc quản trị viên server khi:

  • Lỗi 500 xuất hiện liên tục, không thể tự khắc phục qua các bước cơ bản như làm mới trang, xóa cache, chỉnh sửa tạm thời file .htaccess.

  • Log lỗi hiển thị nguyên nhân vượt ngoài phạm vi kiến thức quản trị web cơ bản (ví dụ: lỗi lập trình phức tạp, dịch vụ backend lỗi, cấu hình máy chủ phức tạp).

  • Server ảnh hưởng nhiều website hoặc dịch vụ cùng lúc, có nguy cơ lan rộng (ví dụ: server bị quá tải, tấn công, lỗi hệ điều hành).

  • Không có quyền truy cập hoặc thao tác trên server.

Việc liên hệ kỹ thuật kịp thời giúp tránh các rủi ro nghiêm trọng như mất dữ liệu, sập hệ thống, hoặc giảm hiệu suất hoạt động của website.


BÌNH LUẬN BÀI VIẾT
Nội dung *
Họ Tên
Email
GỬI BÌNH LUẬN
KIẾN THỨC LIÊN QUAN
tác giả: HỒNG MINH (MINH HM)
CHUYÊN GIA HỒNG MINH
Hồng Minh, CEO LIGHT
Hơn 12 năm kinh nghiệm trong ngành Marketing Online bao gồm SEO, lập trình, thiết kế đồ họa, chạy quảng cáo, vv...
Trainning chuyên sâu về SEO, Google Ads, Quảng Cáo cho hơn 3000+ doanh nghiệp
20+ Khóa tư vấn đào tạo cho doanh nghiệp về Marketing Online