Home > Giới thiệu > PHP xử lý lỗi như thế nào mỗi khi gặp lỗi và có những lỗi nào

PHP xử lý lỗi như thế nào mỗi khi gặp lỗi và có những lỗi nào

Khi chương trình hoặc mã nguồn (source code) của bạn xuất hiện lỗi. Thì bạn sẽ đặt ngay câu hỏi là: PHP xử lý lỗi như thế nào mỗi khi gặp lỗi và có những lỗi nào? Cách xử lý giải quyết ra sao? Bài viết này sẽ tìm giải pháp cho bạn.

Việc xử lý lỗi mặc định trong PHP rất đơn giản. Một thông báo lỗi với tập tin, số dòng và một thông báo mô tả lỗi được gửi đến từ trình duyệt của bạn.

PHP xử lý lỗi như thế nào

Khi bạn đã viết mã nguồn vào ứng web của bạn, xử lý lỗi là một trong những phần quan trọng. Nếu mã của bạn thiếu mã kiểm tra lỗi, chương trình hoặc web của bạn có thể trông rất thiếu chuyên nghiệp và bạn có thể gặp rủi ro về bảo mật.

Hướng dẫn này chứa một số phương thức kiểm tra lỗi phổ biến nhất trong PHP.

hocdelam.info sẽ hiển thị các phương pháp xử lý lỗi khác nhau:

Các câu lệnh “die ()” đơn giản
Lỗi tùy chỉnh và kích hoạt lỗi
Báo cáo lỗi
Xử lý lỗi cơ bản: Sử dụng hàm die ()
Ví dụ đầu tiên cho thấy một câu lệnh đơn giản mở tập tin văn bản lên:

Nếu file tập tin của bạn không tồn tại PHP xử lý lỗi sẽ báo lỗi như thế này

Để ngăn chặn người dùng nhận được thông báo lỗi như ở trên, chúng tôi sẽ kiểm tra xem tệp có tồn tại hay không trước khi chúng ta cố gắng truy cập vào nó:

Với mã nguồn như vậy nó sẽ báo thế này

Mã nguồn ở trên rõ ràng là hoạt động hiệu quả hơn mã trước đó, bởi vì nó sử dụng cơ chế xử lý lỗi đơn giản để dừng câu lệnh sau lỗi.

Tuy nhiên, chỉ đơn giản là dừng kịch bản không phải lúc nào cũng đúng. Chúng ta hãy xem các hàm PHP thay thế để xử lý lỗi.

Tạo cho PHP xử lý lỗi tùy chỉnh

Tạo cho php xử lý lỗi tùy chỉnh khá đơn giản. Chúng ta chỉ cần tạo một hàm đặc biệt có thể được gọi khi xảy ra lỗi trong PHP.

Hàm này phải có khả năng xử lý tối thiểu hai tham số (mức lỗi và thông báo lỗi) nhưng có thể chấp nhận tối đa năm tham số (tùy chọn: file tập tin, số dòng và bối cảnh lỗi):

Cấu Trúc

 

Tham số Chi tiết
error_level Cần thiết. Chỉ định mức báo cáo lỗi cho lỗi do người dùng xác định. Phải là một số giá trị. Xem bảng dưới đây để biết mức báo cáo lỗi có thể
error_message Cần thiết. Chỉ định thông báo lỗi cho lỗi do người dùng xác định
error_file Không bắt buộc. Chỉ định tên tệp trong đó xảy ra lỗi
error_line Không bắt buộc. Chỉ định số dòng trong đó xảy ra lỗi
error_context Không bắt buộc. Chỉ định một mảng chứa mọi biến và giá trị của chúng, được sử dụng khi xảy ra lỗi

 

Các cấp bật báo lỗi

Các mức báo cáo lỗi này là các loại lỗi khác nhau mà trình xử lý lỗi do người dùng xác định có thể được sử dụng cho:

 

Value – giá trị Constant – hằng số Description – chi tiết
2 E_WARNING
8 E_NOTICE Thông báo thời gian chạy. Kịch bản tìm thấy một cái gì đó có thể là một lỗi, nhưng cũng có thể xảy ra khi chạy một kịch bản bình thường
256 E_USER_ERROR Lỗi nghiêm trọng do người dùng tạo ra. Điều này giống như một E_ERROR được lập trình viên thiết lập bằng cách sử dụng hàm PHP trigger_error ()
512 E_USER_WARNING
1024 E_USER_NOTICE Thông báo do người dùng tạo. Đây giống như một E_NOTICE được lập trình viên thiết lập bằng cách sử dụng hàm PHP trigger_error ()
4096 E_RECOVERABLE_ERROR Lỗi nghiêm trọng có thể bắt được. Điều này giống như một E_ERROR nhưng có thể bị bắt bởi một tay cầm do người dùng xác định (xem thêm set_error_handler ())
8191 E_ALL Tất cả các lỗi và cảnh báo (E_STRICT đã trở thành một phần của E_ALL trong PHP 5.4)

 

Bây giờ hãy tạo một hàm để xử lý lỗi. Hàm này có tác dụng xuất ra lỗi và dừng chương trình lại nơi xảy ra lỗi.

 

Mã nguồn câu lênh trên là một chức năng xử lý lỗi đơn giản. Khi được gọi, kích hoạt chúng, nó sẽ nhận được mức lỗi và thông báo lỗi. Sau đó, nó đưa ra mức độ lỗi và thông báo và chấm dứt câu lệnh.

Bây giờ chúng ta đã tạo một hàm xử lý lỗi, chúng ta cần quyết định khi nào nó sẽ được gọi.

 

Đặt cho php xử lý lỗi

Trình xử lý lỗi mặc định cho PHP là trình xử lý lỗi tích hợp. Chúng ta sẽ thực hiện chức năng trên trình xử lý lỗi mặc định trong suốt thời gian của câu lệnh.

Có thể thay đổi trình xử lý lỗi để chỉ áp dụng cho một số lỗi, theo cách đó tập lệnh có thể xử lý các lỗi khác nhau theo các cách khác nhau. Tuy nhiên, trong ví dụ này, hocdelam.info sẽ sử dụng trình xử lý lỗi tùy chỉnh cho tất cả các lỗi:

Vì chúng ta muốn hàm tùy chỉnh của mình xử lý tất cả các lỗi, set_error_handler () chỉ cần một tham số, nên có thể thêm tham số thứ hai để chỉ định mức lỗi.

Ví dụ:

Kiểm tra cho php xử lý lỗi bằng cách thử biến đầu ra không tồn tại:

Ví dụ trên sẽ xuất hiện thế này khi bạn gọi và chạy chúng

Kích hoạt một lỗi

Trong một câu lệnh nơi người dùng có thể nhập dữ liệu, rất hữu ích để kích hoạt lỗi khi xảy ra nhập bất hợp pháp. Trong PHP, điều này được thực hiện bởi hàm trigger_error ().

Ví dụ

Khi bạn chạy sẽ hiển thị như sau

Một lỗi có thể được kích hoạt bất cứ nơi nào bạn muốn trong tập lệnh và bằng cách thêm tham số thứ hai, bạn có thể chỉ định mức lỗi nào được kích hoạt.

Các loại lỗi có thể xảy ra:

– E_USER_ERROR – Lỗi thời gian chạy do người dùng tạo ra gây ngừng chương trình. Các lỗi không thể được phục hồi. Việc thực thi kịch bản bị tạm dừng
– E_USER_WARNING – Cảnh báo thời gian chạy không do người dùng tạo ra. Việc thực thi kịch bản không bị dừng lại
– E_USER_NOTICE – Mặc định. Thông báo thời gian chạy do người dùng tạo. Kịch bản tìm thấy một cái gì đó có thể là một lỗi, nhưng cũng có thể xảy ra khi chạy một kịch bản bình thường

Ví dụ:

Trong ví dụ này, E_USER_WARNING xảy ra nếu biến “kiểm tra” lớn hơn “1”. Nếu xảy ra E_USER_WARNING, chúng ta sẽ sử dụng trình xử lý lỗi tùy chỉnh và kết thúc câu lệnh:

chương trình chạy sẽ xuất ra như sau

Lỗi đăng nhập

Theo mặc định, PHP gửi nhật ký lỗi đến hệ thống ghi nhật ký của máy chủ hoặc file tập tin, tùy thuộc vào cách cấu hình error_log được đặt trong tệp php.ini. Bằng cách sử dụng hàm error_log (), bạn có thể gửi nhật ký lỗi đến một file tập tin được chỉ định hoặc đích đến từ xa.

Gửi thông báo lỗi cho chính bạn bằng e-mail có thể là một cách tốt để nhận được thông báo về các lỗi cụ thể.

Gửi thông báo lỗi qua email

Trong ví dụ dưới đây, chúng ta sẽ gửi e-mail có thông báo lỗi và kết thúc tập lệnh, nếu xảy ra lỗi cụ thể:

Chương trình sẽ xuất hiện như sau

Email sẽ nhận thông báo như sau

Điều này không nên được sử dụng với tất cả các lỗi. Các lỗi thông thường phải được ghi lại trên máy chủ bằng hệ thống ghi nhật ký PHP mặc định.

 

Chúc bạn thành công với cách xử lý trong php