Hàm lỗi và ghi nhật ký PHP

Giới thiệu về PHP Error

Hàm Error và Logging cho phép bạn xử lý và ghi lại lỗi.

Hàm Error cho phép người dùng định nghĩa các quy tắc xử lý lỗi và thay đổi cách ghi lại lỗi.

Hàm logging cho phép người dùng ghi lại ứng dụng và gửi thông báo log đến email, sổ ghi hệ thống hoặc các máy khác.

Hàm error được sử dụng để hoàn thành xử lý lỗi và ghi lại.

Hàm error cho phép chúng ta định nghĩa các quy tắc xử lý lỗi và thay đổi cách ghi lại lỗi.

Hàm logging cho phép chúng ta gửi thông báo trực tiếp đến các máy khác, email hoặc sổ ghi hệ thống.

Hàm báo cáo lỗi cho phép chúng ta xác định loại và cấp độ lỗi.

Cài đặt

Hàm error là một phần của PHP core. Bạn không cần cài đặt thêm để sử dụng các hàm này.

Cấu hình thời gian chạy

Hành vi của hàm error bị ảnh hưởng bởi cài đặt trong php.ini.

Các tùy chọn cấu hình Errors và logging như sau:

Tên Giá trị mặc định Mô tả Khoảng độ có thể thay đổi
error_reporting NULL Cài đặt mức độ báo cáo lỗi (số nguyên hoặc hằng số) PHP_INI_ALL
display_errors "1"

Điều chỉnh có ghi lại lỗi làm ra màn hình hay ẩn lỗi khỏi người dùng.

Lưu ý:Tính năng này không nên được sử dụng trong hệ thống sản xuất (chỉ hỗ trợ phát triển)

PHP_INI_ALL
display_startup_errors "0"

Dù display_errors được đặt là mở, thông tin lỗi trong quá trình khởi động PHP cũng sẽ không được hiển thị.

Chú thích: Được khuyến cáo mạnh mẽ rằng ngoài mục đích gỡ lỗi, bạn nên đặt display_startup_errors là tắt.

PHP_INI_ALL
log_errors "0"

Cài đặt có ghi lại thông tin lỗi của script khi chạy vào sổ ghi lỗi máy chủ hoặc error_log hay không.

Chú thích: Đây là mục cấu hình đặc biệt liên quan đến máy chủ.

Chú thích: Trong hệ thống sản xuất, được khuyến cáo mạnh mẽ rằng bạn nên sử dụng bản ghi lỗi để ghi lại thông tin lỗi hiển thị trên trang web.

PHP_INI_ALL
log_errors_max_len "1024"

Cài đặt số byte tối đa của log_errors. Thông tin về nguồn lỗi sẽ được thêm vào error_log.

Giá trị mặc định là 1024, nếu cài đặt là 0 thì không giới hạn độ dài.

Cài đặt độ dài này có tác dụng hạn chế đối với các lỗi ghi lại, lỗi hiển thị và $php_errormsg.

PHP_INI_ALL
ignore_repeated_errors "0"

Định nghĩa có ghi chép thông tin lỗi trùng lặp hay không.

Lỗi trùng lặp phải xuất hiện trên cùng một dòng mã trong cùng một tệp, trừ khi ignore_repeated_source được đặt thành true.

PHP_INI_ALL
ignore_repeated_source "0"

Định nghĩa có ghi chép thông tin lỗi trùng lặp hay không. Khi bỏ qua thông tin trùng lặp, cũng bỏ qua nguồn thông tin.

Khi cài đặt này được kích hoạt, thông tin trùng lặp sẽ không được ghi chép lại là nó được tạo ra từ tệp khác hoặc dòng mã nguồn khác.

PHP_INI_ALL
report_memleaks "1" Nếu tham số này được đặt thành On (mặc định), sẽ hiển thị báo cáo về rò rỉ bộ nhớ được phát hiện bởi bộ quản lý bộ nhớ Zend. PHP_INI_ALL
track_errors "0" Nếu được kích hoạt, lỗi cuối cùng sẽ luôn tồn tại trong biến $php_errormsg. PHP_INI_ALL
html_errors "1" Tắt thẻ HTML trong thông tin lỗi.
  • PHP_INI_ALL
  • PHP_INI_SYSTEM trong PHP <= 4.2.3.
xmlrpc_errors "0" Nếu được kích hoạt, sẽ tắt báo cáo lỗi thông thường và thiết lập định dạng lỗi thành định dạng thông tin lỗi XML-RPC. PHP_INI_SYSTEM
xmlrpc_error_number "0" Sử dụng làm giá trị của phần tử XML-RPC faultCode. PHP_INI_ALL
docref_root "" (được hỗ trợ từ PHP 4.3) PHP_INI_ALL
docref_ext "" (được hỗ trợ từ PHP 4.3.2) PHP_INI_ALL
error_prepend_string NULL Định nghĩa chuỗi được xuất ra trước thông tin lỗi. PHP_INI_ALL
error_append_string NULL Định nghĩa chuỗi được xuất ra sau thông tin lỗi. PHP_INI_ALL
error_log NULL

Đặt tệp mà lỗi của vân bản sẽ được ghi chép vào. Tệp này phải là tệp mà người dùng máy chủ web có thể ghi.

Nếu sử dụng giá trị đặc biệt syslog, thì gửi thông tin lỗi đến bộ ghi chép nhật ký hệ thống.

PHP_INI_ALL

Hàm lỗi và ghi nhật ký PHP

Hàm Mô tả
debug_backtrace() Tạo lại backtrace.
debug_print_backtrace() In lại backtrace.
error_get_last() Trả về lỗi cuối cùng đã xảy ra.
error_log() Gửi thông báo lỗi đến máy chủ ghi chép lỗi, tệp hoặc mục tiêu từ xa.
error_reporting() Định nghĩa báo cáo lỗi nào.
restore_error_handler() Khôi phục lại trình xử lý lỗi trước đây.
restore_exception_handler() Khôi phục trình xử lý ngoại lệ trước đó.
set_error_handler() Đặt hàm xử lý lỗi tùy chỉnh.
set_exception_handler() Đặt hàm xử lý ngoại lệ tùy chỉnh.
trigger_error() Tạo thông báo lỗi cấp người dùng.
user_error() Tên thay thế của trigger_error().

Hằng số lỗi và nhật ký của PHP 5 được định nghĩa trước.

Giá trị Hằng số Mô tả
1 E_ERROR Lỗi nghiêm trọng khi thời gian chạy. Lỗi không thể sửa được. Chấm dứt việc thực thi vũ bản.
2 E_WARNING Lỗi không致命 khi thời gian chạy. Không chấm dứt việc thực thi vũ bản.
4 E_PARSE Lỗi phân tích cú pháp khi biên dịch. Lỗi phân tích cú pháp chỉ được tạo bởi phân tích viên.
8 E_NOTICE Thông báo thời gian chạy. Chỉ ra rằng vũ bản có thể gặp phải tình huống có thể biểu hiện như lỗi, nhưng trong vũ bản có thể chạy bình thường cũng có thể có thông báo tương tự.
16 E_CORE_ERROR Lỗi nghiêm trọng trong quá trình khởi động khởi tạo PHP. Lỗi này tương tự E_ERROR, nhưng được tạo bởi lõi động cơ PHP.
32 E_CORE_WARNING Cảnh báo trong quá trình khởi động khởi tạo PHP (lỗi không致命). Tương tự E_WARNING, nhưng được tạo bởi lõi động cơ PHP.
64 E_COMPILE_ERROR Lỗi biên dịch nghiêm trọng. Tương tự E_ERROR, nhưng được tạo bởi động cơ script Zend.
128 E_COMPILE_WARNING Cảnh báo khi biên dịch (lỗi không致命). Tương tự E_WARNING, nhưng được tạo bởi động cơ script Zend.
256 E_USER_ERROR Thông báo lỗi do người dùng tạo. Tương tự E_ERROR, nhưng được tạo bởi người dùng tự mình trong mã bằng cách sử dụng hàm PHP trigger_error().
512 E_USER_WARNING Thông báo cảnh báo do người dùng tạo. Tương tự E_WARNING, nhưng được tạo bởi người dùng tự mình trong mã bằng cách sử dụng hàm PHP trigger_error().
1024 E_USER_NOTICE Thông báo thông tin do người dùng tạo. Tương tự E_NOTICE, nhưng được tạo bởi người dùng tự mình trong mã bằng cách sử dụng hàm PHP trigger_error().
2048 E_STRICT Kích hoạt đề xuất sửa đổi mã PHP để đảm bảo mã có tính tương thích và khả năng tương thích trước đây tốt nhất.
4096 E_RECOVERABLE_ERROR Lỗi nghiêm trọng có thể bắt được. Nó biểu thị rằng đã xảy ra một lỗi rất nguy hiểm, nhưng vẫn chưa làm cho máy phát động PHP không ổn định. Nếu lỗi này không được bắt bởi bộ xử lý lỗi tùy chỉnh của người dùng (xem set_error_handler()), nó sẽ trở thành E_ERROR và mã sẽ kết thúc chạy.
8192 E_DEPRECATED Thông báo thời gian chạy. Khi được kích hoạt, sẽ cảnh báo về mã có thể không hoạt động bình thường trong các phiên bản tương lai.
16384 E_USER_DEPRECATED Thông tin cảnh báo do người dùng tạo ra. Tương tự E_DEPRECATED, nhưng được người dùng tự tạo trong mã bằng cách sử dụng hàm PHP trigger_error().
32767 E_ALL E_STRICT tất cả các thông tin lỗi và cảnh báo ngoại trừ.