Skip to content

Dashboard

Các khắc phục lỗi HTTP 500 Internal Server Error

Created by Admin

Lỗi HTTP 500 Internal Server Error thường xảy ra do có quá nhiều người dùng truy cập cùng một lúc. Vậy cụ thể, lỗi HTPT 500 Internal Server Error là gì? Làm thế nào để khắc phục lỗi?

status code HTTP (HTTP status codes) cung cấp thông tin về việc liệu một yêu cầu trực tuyến có thành công hay không. Nếu không, nó sẽ chỉ ra lỗi là gì. Nhưng thông báo lỗi không phải lúc nào cũng rõ ràng. Điều này đặc biệt đúng với trường hợp “500 Internal Server Error”. Thông báo này cho biết rằng đã xảy ra lỗi trong khi xử lý trên server. Do đó không thể truy cập trang được yêu cầu. Tuy nhiên, nó sẽ không cho bạn biết lý do. May mắn thay, có nhiều phương pháp khác nhau để tìm ra nguyên nhân. Chúng tôi chỉ ra các nguồn lỗi điển hình và đưa ra các mẹo về những việc cần làm nếu bạn gặp phải lỗi HTTP 500.

Lỗi HTTP 500 – Internal Server Error nghĩa là gì?

Sử dụng status code, Web Server cho trình duyệt của người dùng internet (client) biết một request (tức là truy cập một trang web) có thành công hay không. Nếu trình duyệt nhận được status code 200, nó biết rằng mọi thứ đã diễn ra tốt đẹp. Tuy nhiên, người dùng không bao giờ thấy thông báo này. Vì nội dung được yêu cầu xuất hiện thay cho thông báo (nếu không có lỗi). Tình hình khác với status code 400 và 500. Trong khi cái trước chỉ ra lỗi client, cái sau liên quan đến server. Lỗi 500 – Internal Server Error là một status code chung cho các lỗi server. Do đó, nhìn sơ qua thì không thể xác định được lỗi thực sự nằm ở đâu. Người dùng chỉ biết rằng server đã báo lỗi không mong muốn.

Tuy nhiên, nếu máy chủ đã cài đặt Microsoft Internet Information Services (Microsoft IIS), mã lỗi sẽ được chỉ định. Vị trí thập phân cho biết nguyên nhân của lỗi một cách chi tiết hơn:

  • 500.0: Đã xảy ra lỗi mô-đun hoặc ISAPI.
  • 500.11: Ứng dụng đang tắt trên server web.
  • 500.12: Ứng dụng đang bận khởi động lại trên server web.
  • 500.13: Server web quá tả.
  • 500.15: Request trực tiếp đối với global.asax không được phép.
  • 500.19: Dữ liệu cấu hình không hợp lệ.
  • 500.21: Module không được nhận dạng.
  • 500.22: Cấu hình ASP.NET httpModules không áp dụng trong Managed Pipeline mode.
  • 500.23: Cấu hình ASP.NET httpHandlers không áp dụng trong Managed Pipeline mode. 500.24: Cấu hình mạo danh ASP.NET không áp dụng trong Managed Pipeline mode.
  • 500.50: Đã xảy ra lỗi rewrite trong quá trình xử lý thông báo RQ_BEGIN_REQUEST. Đã xảy ra lỗi cấu hình hoặc thực thi quy tắc gửi đến.
  • 500.51: Đã xảy ra lỗi rewrite trong quá trình xử lý thông báo GL_PRE_BEGIN_REQUEST. Đã xảy ra lỗi cấu hình chung hoặc thực thi quy tắc chung.
  • 500.52: Đã xảy ra lỗi rewrite trong quá trình xử lý thông báo RQ_SEND_RESPONSE. Đã xảy ra thực thi quy tắc outbound.
  • 500.53: Đã xảy ra lỗi rewrite trong quá trình xử lý thông báo RQ_RELEASE_REQUEST_STATE. Đã xảy ra lỗi thực thi quy tắc outbound. Quy tắc được định cấu hình để được thực thi trước khi output user cache được cập nhật.
  • 500.100: Lỗi ASP nội bộ.

Nguyên nhân của lỗi HTTP 500 là gì?

“Internal Server Error” có thể xảy ra khi server web xử lý request. status code chung bao gồm mọi thứ ngoài kế hoạch có thể xảy ra trên server. Việc này ngăn trang web được tải. Lỗi server 500 có thể xảy ra do lỗi đã xảy ra trong cấu hình của server web. Dưới đây là danh sách các nguồn lỗi điển hình:

  • Permission Error: Quyền của các file và thư mục chính không được đặt chính xác.
  • PHP timeout: Scripts cố gắng truy cập tài nguyên bên ngoài và vượt quá thời gian chờ.
  • Mã trong .htaccess không chính xác: Cấu trúc trong tệp .htaccess có thể sai.
  • Lỗi cú pháp hoặc mã trong scripts CGI / Perl: Trong một số trường hợp, script không chính xác. Đặc biệt, các đường dẫn có thể bị lệch.
  • Giới hạn bộ nhớ PHP: Một tiến trình vượt quá bộ nhớ và do đó không thể được thực thi một cách chính xác.

Trong trường hợp các trang web WordPress hoặc các hệ thống quản lý nội dung khác, việc cài đặt một tiện ích mở rộng bị lỗi hoặc không tương thích cũng có thể là nguyên nhân. Các plugin và chủ đề (themes)- đặc biệt là từ các nhà cung cấp bên thứ ba – có thể ảnh hưởng đến toàn bộ trang web.

Các web operators có thể sửa lỗi 500 Internal Server Error như thế nào?

Có phải khách truy cập trang web của bạn chỉ nhìn thấy lỗi máy chủ 500 không? Là một nhà điều hành, bạn nên giải quyết vấn đề nhanh chóng. Vì điều này không chỉ khiến khách truy cập của bạn lo sợ. Mà còn có thể đồng nghĩa với việc Google sẽ hạ xếp hạng của bạn. Trước khi bạn thực hiện, trước tiên hãy kiểm tra xem server của bạn vẫn đang chạy hay không. Nếu không, hãy liên hệ với nhà cung cấp dịch vụ lưu trữ của bạn càng sớm càng tốt.

Nếu có lỗi Internal Server Error, bước đầu tiên là xem các log files. Đối với Server Linux, các thông báo lỗi sẽ được tìm thấy tại /var/log/httpd/error_log. Bạn nên tải lại trang web để tạo lại mã lỗi HTTP 500 và quan sát cách log file đang được tạo. Điều này sẽ giúp bạn tìm ra nguồn gốc của lỗi khá nhanh chóng. Cũng xem xét những thay đổi nào đã được thực hiện trước đó không lâu. Trong nhiều trường hợp, các plugin được lập trình không chính xác hoặc không tương thích là nguyên nhân gây ra thông báo lỗi.

Lỗi cũng có thể xảy ra nếu bạn không phân quyền một cách chính xác cho các file quan trọng. Nói chung, có ba loại quyền:

  • Đọc (r)
  • Viết (w)
  • Thực thi (x)

Các quyền này có thể được chỉ định cho ba loại người dùng khác nhau:

  • Chủ sở hữu của file
  • Nhóm người dùng
  • Tất cả những người khác

Các quyền được chỉ định bằng các chữ viết tắt r, w và x. Hoặc bằng các giá trị số tương ứng: 4 để đọc, 2 để ghi và 1 để thực thi. Chúng được thêm vào cho từng loại người dùng và được chỉ định lần lượt: rwxr-xr-x (rwx cho chủ sở hữu, r-x cho nhóm và r-x cho tất cả những người khác) hoặc 755. Cấu hình (755) phải là cài đặt mặc định. Nếu việc gán quyền được đặt khác, có thể xảy ra lỗi. Bạn có thể thay đổi điều này bằng một lệnh:

chmod 755 filename

Nếu thay đổi này không giải quyết được sự cố, bạn cũng có thể giải phóng tất cả các quyền cho từng nhóm cho mục đích kiểm tra:

chmod 777 filename

Nhưng chỉ sử dụng cài đặt này để xác định vấn đề. Khi đó mọi người dùng nào cũng được phép viết lại file. Điều này có thể hiểu là một rủi ro bảo mật.

Tiếp theo, hãy kiểm tra (nếu việc phân phối quyền không tạo ra thông báo lỗi) xem các scripts của bạn có đang chạy chính xác hay không. Đôi khi lỗi xảy ra do các file script đã được di chuyển, đổi tên hoặc xóa. Ngoài ra, hãy kiểm tra .htaccess file: ngay cả một lỗi cú pháp cũng có thể gây ra lỗi server nội bộ.

Một lỗi phổ biến không kém là định dạng.htaccess file không chính xác. Mã này phải được tạo ở định dạng ASCII hoặc ANSI, không phải bằng Unicode. Do đó, hãy ghi file trong một trình soạn thảo văn bản như Notepad, Notepad++ hoặc Sublime Text. Chứ không phải trong một chương trình xử lý văn bản như Microsoft Word. Để kiểm tra xem tệp có phải chịu trách nhiệm cho lỗi hay không, bạn có thể tạm thời đổi tên tệp và tải lại trang web. Server sẽ không truy cập .htaccess khi tải trang web. Nếu không còn nhận được thông báo lỗi, bạn có thể sửa file hoặc tạo file mới.

Thời gian chờ cũng có thể dẫn đến thông báo lỗi. Trong trường hợp này, đó không phải là lỗi server web mà là do kết nối bị gián đoạn với nguồn bên ngoài. Các PHP scripts trên trang web của bạn có được thiết lập để truy cập tài nguyên từ các server khác không? Có lẽ tài nguyên không còn hoặc giao tiếp server bị gián đoạn vì một số lý do khác. Tất nhiên, một cách để loại bỏ nguồn lỗi này là không làm cho trang web của bạn phụ thuộc vào các tài nguyên bên ngoài. Nếu không được, bạn có thể tăng giới hạn thời gian cho script của mình. Nó cũng có ý nghĩa khi triển khai xử lý lỗi hiệu quả để các lỗi trong PHP script có thể được phát hiện chính xác hơn.

Có thể là do bộ nhớ bị quá tải? Giới hạn bộ nhớ xác định lượng bộ nhớ mà một tiến trình có thể sử dụng. Nếu cần nhiều RAM hơn khả dụng, điều này có thể dẫn đến lỗi server nội bộ. Bạn có thể tăng giới hạn như một giải pháp tạm thời. Để thực hiện việc này, hãy thêm một command như sau vào php.ini:

memory_limit = 512M

Trong ví dụ này, bạn sẽ đặt bộ nhớ được cung cấp thành 512MB. Tuy nhiên, lưu ý rằng nhà cung cấp dịch vụ lưu trữ của bạn sẽ chỉ cho phép bạn một giới hạn PHP script nhất định trong gói mà bạn đã đặt. Nếu bạn nhập giá trị cao hơn, web server sẽ bỏ qua giá trị đó. Nâng giới hạn chỉ là một giải pháp tạm thời: sau khi trang web của bạn hoạt động trở lại, bạn nên cân nhắc lựa chọn RAM cao hơn. Có khả năng cao là lỗi có thể được tìm thấy trong mã trang web của bạn.

Nếu không có phương pháp nào trong số này cung cấp cho bạn giải pháp, bạn nên liên hệ với nhà cung cấp dịch vụ lưu trữ của mình. Trước khi thực hiện, bạn có thể kiểm tra trạng thái của server.

Theo IONOS.

Tìm hiểu thêm:
>>> HTTP là gì? XHR – XML HTTP Request
>>> HTTPS là gì? HTTPS có vai trò quan trọng như thế nào?
>>> HTML là gì? & vai trò HTML trong code website

Source: https://vietnix.vn/loi-http-500-cach-khac-phuc/