Các lỗi khác nhau trong php là gì?

PHP đã xuất hiện khá lâu và đã phát triển những đặc điểm và đặc điểm riêng của nó. Nó cũng đã phát triển hương vị báo cáo lỗi của riêng mình, điều này khá đơn giản. Trong bài đăng này, chúng tôi sẽ chỉ cho bạn cách dễ dàng để thêm giám sát lỗi cho PHP

Không còn tìm kiếm thông qua nhật ký - chẩn đoán và sửa lỗi PHP nhanh hơn với Raygun

Tìm hiểu thêm và dùng thử Báo cáo sự cố Raygun miễn phí trong 14 ngày

Lỗi PHP là gì?

Lỗi PHP là cấu trúc dữ liệu đại diện cho điều gì đó không ổn trong ứng dụng của bạn. PHP có một số cách cụ thể mà bạn có thể gọi lỗi. Một cách dễ dàng để mô phỏng lỗi là sử dụng hàm

throw new Exception("Yo, something exceptional happened);
5

die("something bad happened!");

Điều này sẽ kết thúc chương trình PHP và báo lỗi. Khi một chương trình kết thúc, đây là cái mà chúng tôi gọi là lỗi nghiêm trọng. Sau này, bạn sẽ thấy rằng chúng ta có thể kiểm soát chính xác cách xử lý lỗi, trong trường hợp chúng ta cần gọi một số logic dọn dẹp hoặc chuyển hướng nơi báo cáo lỗi. Bạn cũng có thể mô phỏng điều này bằng hàm

throw new Exception("Yo, something exceptional happened);
6



trigger_error("something happened"); //error level is E_USER_NOTICE

//You can control error level
trigger_error("something bad happened", E_USER_ERROR);
?>

Điều này sẽ kích hoạt một thông báo không nghiêm trọng trong hệ thống theo mặc định. Bạn có thể ghi đè mức lỗi nếu cần lỗi nặng hơn

Thực tế có hai dạng lỗi trong PHP. lỗi run-of-the-mill tiêu chuẩn và ngoại lệ

Ngoại lệ đã được giới thiệu trong PHP 5. Chúng cung cấp cho bạn ngữ nghĩa dễ dàng hơn như

throw new Exception("Yo, something exceptional happened);
7,
throw new Exception("Yo, something exceptional happened);
8 và
throw new Exception("Yo, something exceptional happened);
9. Thật dễ dàng để ném một ngoại lệ. Điều này theo sau cùng với sự thành công lớn của các ngôn ngữ gõ tĩnh, như C# và Java, đã có với chúng.

throw new Exception("Yo, something exceptional happened);

Bắt và loại bỏ các ngoại lệ có xu hướng được sắp xếp hợp lý hơn so với xử lý lỗi PHP truyền thống hơn. Bạn cũng có thể xử lý lỗi cục bộ hơn, thay vì chỉ xử lý lỗi trên toàn cầu thông qua set_error_handler(). Bạn có thể bao quanh logic cụ thể bằng các khối thử/bắt chỉ quan tâm đến các ngoại lệ cụ thể

________số 8

Các loại lỗi khác nhau trong PHP là gì?

Lỗi PHP không phải là một lỗi duy nhất mà có 4 loại khác nhau

  • lỗi phân tích cú pháp hoặc cú pháp
  • lỗi nghiêm trọng
  • lỗi cảnh báo
  • thông báo lỗi

Lỗi phân tích cú pháp hoặc cú pháp

Loại lỗi đầu tiên trong PHP là lỗi phân tích cú pháp, còn được gọi là lỗi cú pháp. Chúng chỉ có nghĩa là có một hoặc nhiều biểu tượng không chính xác trong tập lệnh của bạn. Có thể bạn đã bỏ lỡ dấu chấm phẩy hoặc đặt sai dấu ngoặc. Hãy xem ví dụ sau


$age = 25;

if ($age >= 18 {
    echo 'Of Age';
} else {
    echo 'Minor';
}
?>

Bằng cách chạy đoạn script trên, tôi gặp lỗi sau

die("something bad happened!");
0

Với sự trợ giúp của thông báo lỗi, thật dễ dàng để thấy câu lệnh if thiếu dấu ngoặc đơn đóng. Hãy khắc phục điều đó

die("something bad happened!");
1

Lỗi nghiêm trọng

Lỗi nghiêm trọng, như tên gọi của chúng, là những lỗi có khả năng giết chết—hoặc làm hỏng—ứng dụng. Nói cách khác, lỗi nghiêm trọng là lỗi nghiêm trọng, có nghĩa là một điều gì đó thảm khốc đã xảy ra và ứng dụng không thể tiếp tục

Thông thường, lý do gây ra lỗi nghiêm trọng là do một lớp, hàm hoặc một tạo phẩm khác không xác định. Nếu một tập lệnh cố gắng sử dụng một chức năng không tồn tại, thì PHP không biết phải làm gì và tập lệnh đó phải bị dừng

Hãy xem xét đoạn script sau

die("something bad happened!");
2

Như bạn có thể thấy, tập lệnh định nghĩa một hàm gọi là add và sau đó cố gắng gọi nó bằng tên sai. Tình huống này dẫn đến một lỗi nghiêm trọng

die("something bad happened!");
3

Tất cả những gì cần làm để giải quyết lỗi là thay đổi lệnh gọi hàm thành tên chính xác, thêm

die("something bad happened!");
4

lỗi cảnh báo

Lỗi cảnh báo là lỗi không dẫn đến việc chấm dứt tập lệnh. Tương tự như những gì xảy ra trong các ngôn ngữ khác, cảnh báo trong PHP thường đại diện cho điều gì đó chưa phải là vấn đề toàn diện—hoặc ít nhất không phải là vấn đề nghiêm trọng—nhưng nó có thể trở thành vấn đề nghiêm trọng trong tương lai, vì vậy tốt hơn hết bạn nên giữ cảnh báo

Hãy xem đoạn mã sau



trigger_error("something happened"); //error level is E_USER_NOTICE

//You can control error level
trigger_error("something bad happened", E_USER_ERROR);
?>
0

Sau khi chạy đoạn mã trên, chúng tôi nhận được cảnh báo sau



trigger_error("something happened"); //error level is E_USER_NOTICE

//You can control error level
trigger_error("something bad happened", E_USER_ERROR);
?>
1

Điều gây ra cảnh báo là do chúng tôi chưa cung cấp tham số cho hàm parse_url. Hãy khắc phục điều đó



trigger_error("something happened"); //error level is E_USER_NOTICE

//You can control error level
trigger_error("something bad happened", E_USER_ERROR);
?>
2

Điều đó khắc phục cảnh báo



trigger_error("something happened"); //error level is E_USER_NOTICE

//You can control error level
trigger_error("something bad happened", E_USER_ERROR);
?>
3

thông báo lỗi

Lỗi thông báo tương tự như cảnh báo ở chỗ chúng cũng không dừng thực thi tập lệnh. Bạn cũng nên nghĩ về lỗi thông báo vì PHP giúp bạn đề phòng điều gì đó có thể trở thành vấn đề trong tương lai. Tuy nhiên, thông báo thường được coi là ít quan trọng hơn hoặc ít dữ dội hơn so với cảnh báo

Hãy xem xét đoạn mã sau, đây là phiên bản đã thay đổi của tập lệnh được sử dụng trong các phần trước



trigger_error("something happened"); //error level is E_USER_NOTICE

//You can control error level
trigger_error("something bad happened", E_USER_ERROR);
?>
4

Như bạn có thể thấy, tập lệnh xác định biến $numbers, sau đó cố gắng chuyển một biến có tên $integers cho hàm phát nổ

Các biến không xác định thực sự là một trong những nguyên nhân hàng đầu gây ra thông báo trong PHP. Để làm cho lỗi biến mất, chỉ cần thay đổi biến $integers thành $numbers

Cách bật báo cáo lỗi trong PHP

Kích hoạt báo cáo lỗi trong PHP thật dễ dàng. Bạn chỉ cần gọi một hàm trong tập lệnh của mình



trigger_error("something happened"); //error level is E_USER_NOTICE

//You can control error level
trigger_error("something bad happened", E_USER_ERROR);
?>
5

Điều này nói rằng “vui lòng báo cáo lỗi của tất cả các cấp. ” Chúng tôi sẽ đề cập đến các cấp độ sau, nhưng hãy coi đó là một loại lỗi. Vì vậy, về cơ bản nó nói “báo cáo tất cả các loại lỗi. ” Bạn có thể tắt báo cáo lỗi bằng cách cài đặt 0



trigger_error("something happened"); //error level is E_USER_NOTICE

//You can control error level
trigger_error("something bad happened", E_USER_ERROR);
?>
6

Tham số phương thức trong

 try {
    doSystemLogic();
} catch (SystemException $e) {
    echo 'Caught system exception ';
}

try {
    doUserLogic();
} catch (Exception $e) {
    echo 'Caught misc exception ';
}
?>
0 thực sự là một bitmask. Bạn có thể chỉ định các tổ hợp mức độ lỗi khác nhau trong nó bằng cách sử dụng mặt nạ này, như bạn có thể thấy



trigger_error("something happened"); //error level is E_USER_NOTICE

//You can control error level
trigger_error("something bad happened", E_USER_ERROR);
?>
7

Điều này cho biết “báo cáo lỗi nghiêm trọng, cảnh báo và lỗi trình phân tích cú pháp. ” Bạn có thể chỉ cần phân định bằng “. ” để thêm nhiều lỗi hơn. Đôi khi bạn có thể muốn cài đặt báo cáo lỗi nâng cao hơn. Bạn có thể tận dụng các toán tử bitmask để báo cáo theo nhiều tiêu chí khác nhau



trigger_error("something happened"); //error level is E_USER_NOTICE

//You can control error level
trigger_error("something bad happened", E_USER_ERROR);
?>
8

Như bạn có thể thấy, bạn có khá nhiều sự linh hoạt trong việc xác định lỗi nào cần báo cáo. Điều đó đặt ra câu hỏi. Có những loại lỗi và ngoại lệ nào để báo cáo?

Có bao nhiêu cấp độ lỗi trong PHP?

Có tới 16 cấp độ lỗi trong PHP 5. Các lỗi này đại diện cho danh mục và đôi khi là mức độ nghiêm trọng của lỗi trong PHP. Có rất nhiều, nhưng nhiều danh mục cho phép bạn dễ dàng xác định vị trí để gỡ lỗi chỉ từ cấp độ của nó. Vì vậy, nếu bạn muốn làm điều gì đó chỉ dành riêng cho lỗi người dùng, chẳng hạn như xác thực đầu vào, bạn có thể xác định trình xử lý điều kiện cho mọi thứ bắt đầu bằng

 try {
    doSystemLogic();
} catch (SystemException $e) {
    echo 'Caught system exception ';
}

try {
    doUserLogic();
} catch (Exception $e) {
    echo 'Caught misc exception ';
}
?>
1. Nếu bạn muốn đảm bảo rằng bạn đã tắt một tài nguyên, bạn có thể làm điều đó bằng cách tìm ra các lỗi kết thúc bằng
 try {
    doSystemLogic();
} catch (SystemException $e) {
    echo 'Caught system exception ';
}

try {
    doUserLogic();
} catch (Exception $e) {
    echo 'Caught misc exception ';
}
?>
2

Các lỗi trong PHP phần lớn được phân loại theo mức độ nghiêm trọng của chúng (cảnh báo lỗi, thông báo) và nguồn (người dùng, trình biên dịch, thời gian chạy)

Tôi muốn trau dồi một vài cái phổ biến ở đây

Đầu tiên, chúng tôi có các lỗi chung

  • E_ERROR (Giá trị 1). Đây là lỗi nghiêm trọng. Nếu bạn nhìn thấy cậu bé hư này, ứng dụng của bạn đã hoàn thành. Khởi động lại và thử lại

  • E_WARNING (2). Đây là những lỗi không làm hỏng ứng dụng của bạn. Hầu hết các lỗi dường như ở cấp độ này

Tiếp theo, chúng tôi có lỗi người dùng

  • E_USER_ERROR (256). Phiên bản do người dùng tạo ra lỗi nghiêm trọng ở trên. Điều này thường được tạo thông qua trigger_error()

  • E_USER_NOTICE (1024). Phiên bản do người dùng tạo của một sự kiện cung cấp thông tin. Điều này thường không có tác dụng phụ đối với ứng dụng, giống như nhật ký. thông tin()

Danh mục lưu ý cuối cùng là lỗi vòng đời của ứng dụng, thường có tên "lõi" hoặc "biên dịch"

  • EE_CORE_ERROR (16). Tương tự như các lỗi nghiêm trọng ở trên, lỗi này chỉ có thể xảy ra khi ứng dụng PHP khởi động

  • EE_COMPILE_WARNING (128). Một lỗi không nghiêm trọng chỉ xảy ra khi tập lệnh PHP không biên dịch được

Còn một số lỗi khác. Bạn có thể tìm thấy toàn bộ danh sách của họ ở đây

Lỗi hiển thị PHP

Hiển thị thông báo lỗi trong PHP thường là một chủ đề khó hiểu. Chỉ cần google “hiển thị thông báo lỗi PHP” và xem. Tại sao lại như vậy?

Trong PHP, bạn có thể quyết định có hiển thị lỗi hay không. Điều này khác với việc báo cáo chúng. Báo cáo chúng sẽ đảm bảo các lỗi không bị nuốt chửng. Nhưng hiển thị chúng sẽ hiển thị chúng cho người dùng. Bạn có thể yêu cầu PHP hiển thị tất cả các lỗi bằng cách sử dụng chỉ thị display_errors và display_startup_errors



trigger_error("something happened"); //error level is E_USER_NOTICE

//You can control error level
trigger_error("something bad happened", E_USER_ERROR);
?>
9

Bật những tính năng này sẽ đảm bảo chúng hiển thị trong nội dung phản hồi của web cho người dùng. Thông thường, cách tốt nhất là tắt những thứ này trong môi trường không phát triển. Tham số phương thức số nguyên cũng là một bitmask, như trong

 try {
    doSystemLogic();
} catch (SystemException $e) {
    echo 'Caught system exception ';
}

try {
    doUserLogic();
} catch (Exception $e) {
    echo 'Caught misc exception ';
}
?>
0. Các quy tắc và tùy chọn tương tự cho tham số đó cũng được áp dụng tại đây

Cảnh báo PHP là gì?

Ở trên, bạn sẽ lưu ý rằng một trong các cấp độ lỗi là

 try {
    doSystemLogic();
} catch (SystemException $e) {
    echo 'Caught system exception ';
}

try {
    doUserLogic();
} catch (Exception $e) {
    echo 'Caught misc exception ';
}
?>
4. Bạn cũng có thể lưu ý rằng nhiều cấp độ lỗi có các phiên bản cảnh báo. Tôi muốn đào sâu vào vấn đề này một chút. Sự khác biệt chính giữa cảnh báo và lỗi trong PHP là nó có kết thúc ứng dụng hay không. Trong PHP, hầu hết các lỗi không thực sự ngăn tập lệnh thực thi

Đây là một ví dụ

throw new Exception("Yo, something exceptional happened);
0

Bạn vẫn sẽ thấy

 try {
    doSystemLogic();
} catch (SystemException $e) {
    echo 'Caught system exception ';
}

try {
    doUserLogic();
} catch (Exception $e) {
    echo 'Caught misc exception ';
}
?>
5 mặc dù đã kích hoạt cảnh báo. Điều này có thể hữu ích nếu bạn muốn thu thập danh sách các lỗi xác thực. Cá nhân tôi thích sử dụng các ngoại lệ ngày nay, nhưng số dặm của bạn có thể thay đổi

Tất nhiên, bạn có thể để PHP hiển thị cảnh báo hoặc không. Để làm được điều đó, bạn sẽ sử dụng cấu hình 'display_errors' mà bạn đã thấy trong phần trước

Báo cáo sự cố giúp ích như thế nào

PHP giúp dễ dàng thiết lập các công cụ báo cáo lỗi bên ngoài, giống như các công cụ do Raygun cung cấp. Nó cung cấp một vài hook khác nhau trong thời gian chạy của nó để xử lý lỗi và gửi chúng qua dây. Xem ví dụ này, được lấy từ trang PHP của Raygun

throw new Exception("Yo, something exceptional happened);
1

Đầu tiên, chúng tôi khai báo ứng dụng khách, sử dụng khóa API để bảo mật

throw new Exception("Yo, something exceptional happened);
2

Sau đó, chúng tôi tạo một vài chức năng xử lý các lỗi và ngoại lệ của chúng tôi

throw new Exception("Yo, something exceptional happened);
3

Lưu ý rằng chúng tôi gọi hàm

 try {
    doSystemLogic();
} catch (SystemException $e) {
    echo 'Caught system exception ';
}

try {
    doUserLogic();
} catch (Exception $e) {
    echo 'Caught misc exception ';
}
?>
6, chuyển vào một vài chi tiết liên quan về cấu trúc dữ liệu lỗi. Điều này sẽ thực hiện một cuộc gọi từ xa tới Raygun

Cuối cùng, chúng tôi kết nối chúng vào thời gian chạy của PHP bằng cách xử lý toàn cầu cả lỗi truyền thống và ngoại lệ mới hơn

throw new Exception("Yo, something exceptional happened);
4

Và đó là nó. Với tất cả những điều này, chúng tôi có thể nhận được báo cáo lỗi được định dạng đẹp mắt trông như thế này

Các lỗi khác nhau trong php là gì?

Kết thúc báo cáo lỗi PHP

Như bạn có thể thấy, báo cáo lỗi PHP rất đơn giản. Bạn có thể kích hoạt ngoại lệ thông qua các chức năng đặc biệt. Bạn cũng có thể kích hoạt các ngoại lệ, như trong các ngôn ngữ nhập khác

Thật dễ dàng để cắm trình xử lý của riêng bạn và kiểm soát việc báo cáo và hiển thị lỗi. Điều này cho phép chúng tôi cắm công cụ của Raygun mà không tốn nhiều công sức - vui lòng đăng ký dùng thử Raygun và thêm nó vào ứng dụng của bạn sau vài phút

Các cấp độ lỗi trong PHP là gì?

Thực tế có hai dạng lỗi trong PHP. các lỗi thông thường tiêu chuẩn và ngoại lệ . Ngoại lệ đã được giới thiệu trong PHP 5.

Các phương pháp xử lý lỗi khác nhau trong PHP là gì?

Chúng tôi 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.

Lỗi và ngoại lệ trong PHP là gì?

Ngoại lệ là đối tượng mô tả lỗi hoặc hành vi không mong muốn của tập lệnh PHP . Các ngoại lệ được đưa ra bởi nhiều hàm và lớp PHP. Các hàm và lớp do người dùng định nghĩa cũng có thể đưa ra các ngoại lệ. Ngoại lệ là một cách hay để dừng một chức năng khi gặp dữ liệu mà nó không thể sử dụng.

Lỗi logic trong PHP là gì?

Lỗi logic khiến chương trình hoạt động không chính xác . Ví dụ, trong PHP, khi "if ($i=1) {…}" bị nhập sai thay vì "if ($i==1) {…. }," cái trước có nghĩa là "trở thành" trong khi cái sau có nghĩa là "bằng. " Câu lệnh if sai sẽ luôn trả về TRUE khi gán 1 cho biến $i.