Lỗi trong PHP là những thông báo hoặc thông báo cảnh báo mà mô tả các vấn đề xảy ra trong quá trình thực thi mã nguồn PHP. Có nhiều loại lỗi, bao gồm cú pháp sai, lỗi logic, error runtime, và nhiều lỗi khác. Những thông báo này giúp nhà phát triển xác định và sửa chữa vấn đề, giúp ứng dụng hoạt động một cách mượt mà và đáng tin cậy hơn. Trong bài viết này, hãy cùng Vietnix tìm hiểu thêm về chủ đề các Lỗi/Error xuất hiện trong PHP.
Lỗi trong ngôn ngữ lập trình là gì?
Error (lỗi) là những sai sót hoặc vấn đề trong mã nguồn mà có thể gây ra sự cố trong quá trình thực thi chương trình. Error có khá nhiều loại, nhiều kiểu có thể xảy ra, xuất hiện từ nhiều nguồn khác nhau, bao gồm cú pháp sai, logic chưa chuẩn, xử lý dữ liệu không đúng, hoặc thậm chí là các vấn đề về môi trường thực thi.
Trong quá trình phát triển phần mềm, việc phát hiện và sửa lỗi là một phần quan trọng của quá trình kiểm thử và debug. Các công cụ debug và các quy tắc tốt về quản lý lỗi giúp nhận diện và khắc phục vấn đề một cách hiệu quả.
Phân loại lỗi trong PHP
Về cơ bản trong PHP có thể chia ra 4 kiểu lỗi chính:
- Lỗi phân tích cú pháp, Lỗi cú pháp (Parse error, Syntax Error): Là loại lỗi do người lập trình thực hiện trong mã nguồn của chương trình. Lỗi cú pháp được trình biên dịch phát hiện. Sau khi sửa lỗi cú pháp, trình biên dịch sẽ biên dịch mã và thực thi nó. Lỗi phân tích cú pháp có thể do dấu ngoặc kép không được đóng, thiếu hoặc dấu ngoặc đơn bổ sung, dấu ngoặc nhọn, thiếu dấu chấm phẩy,…
Ví dụ:
<?php
$x = "geeks";
y = "Computer science";
echo $x;
echo $y;
?>
Output như sau:
ERROR!
Parse error: syntax error, unexpected token "=" in /tmp/UbkjsdHzxI.php on line 3
Như đã thấy, hê thống báo về vấn đề thiếu dấu $ tại dòng 3.
- Lỗi nghiêm trọng (Fatal Error): Đây là loại lỗi mà trình biên dịch PHP hiểu được mã PHP nhưng nó nhận ra một hàm không được khai báo. Điều này có nghĩa là hàm được gọi mà không cần định nghĩa hàm.
Ví dụ:
<?php
function add($x, $y)
{
$sum = $x + $y;
echo "sum = " . $sum;
}
$x = 0;
$y = 20;
add($x, $y);
diff($x, $y);
?>
Output nhu sau:
ERROR! sum = 20 Fatal error: Uncaught Error: Call to undefined function diff() in /tmp/UbkjsdHzxI.php:12 Stack trace: #0 {main} thrown in /tmp/UbkjsdHzxI.php on line 12
Trong đoạn kết quả trả về, tại dòng 12, hàm được gọi thực thi nhưng không có xác định hàm, do đó hệ thống báo lỗi.
- Lỗi cảnh báo (Warning Errors): Nguyên nhân chính gây ra lỗi cảnh báo là thiếu file. Điều này có nghĩa là hàm PHP gọi file bị thiếu.
Ví dụ:
<?php
$x = "Vietnix Hosting;
ERROR!
Parse error: syntax error, unexpected identifier "vietnix" in /tmp/UbkjsdHzxI.php on line 5
include ("vietnix.php");
echo $x . " Computer science portal";
?>
Output như sau:
Warning: include(vietnix.php): Failed to open stream: No such file or directory in /tmp/q6nxobk8EW.php on line 5 Warning: include(): Failed opening 'vietnix.php' for inclusion (include_path='.:/usr/local/lib/php') in /tmp/q6nxobk8EW.php on line 5 Vietnix Hosting Computer science portal
Trong cảnh báo trên, chương trình đã gọi 1 file tên vietnix.php nhưng file này không xác định và có tồn tại, từ đó gây lỗi.
- Lỗi thông báo (Notice Error): lỗi này cơ bản sẽ tương tự lỗi cảnh báo, có nghĩa là chương trình có xảy ra lỗi nhung vẫn cho phép thực thi.
Ví dụ:
<?php
$x = "Vietnix Hosting";
echo $x;
echo $geeks;
?>
Output như sau:
Vietnix Hosting
Warning: Undefined variable $geeks in /tmp/q6nxobk8EW.php on line 7
Chương trình này sử dụng biến $Vietnix Hosting nhưng không được khai báo nên nó đưa ra thông báo lỗi.
Các lỗi PHP mặc định và mô tả:
Default error | Mô tả |
E_ERROR | Lỗi nghiêm trọng khiến file script bị hủy thực thi. |
E_WARNING | Cảnh báo thời gian chạy, không gây ra hiện tượng chấm dứt thực thi script. |
E_PARSE | Lỗi phân tích thời gian biên dịch. |
E_NOTICE | Thông báo thời gian chạy gây ra do lỗi code. |
E_CORE_ERROR | Lỗi nghiêm trọng xảy ra trong quá trình khởi động (cài đặt) ban đầu của PHP. |
E_CORE_WARNING | Cảnh báo xảy ra trong quá trình khởi động lần đầu của PHP. |
E_COMPILE_ERROR | Sự cố chỉ báo lỗi thời gian biên dịch nghiêm trọng với tập lệnh script. |
E_USER_ERROR | Thông báo lỗi do người dùng tạo. |
E_USER_WARNING | Cảnh báo do người dùng tạo. |
E_USER_NOTICE | Tin nhắn thông báo do người dùng tạo. |
E_STRICT | Thông báo về thời gian chạy. |
E_RECOVERABLE_ERROR | Lỗi nghiêm trọng có thể thấy được cho biết lỗi nguy hiểm |
E_DEPRECATED | Thông báo về thời gian chạy. |
Ngoài những thông tin trong bài, bạn có thể tham khảo thêm các bài viết sau:
Lời kết
Vietnix hy vọng nội dung bài viết trên đã giúp bạn hiểu rõ hơn về các loại lỗi xuất hiện trong PHP. Ngoài ra, bạn cũng có thể tham khảo thêm các bài viết khác như lấy file từ thư mục chỉ định bằng hàm scandir()
trong PHP hoặc tổng hợp về hàm rewinddir()
trong PHP để hiểu hơn về lập trình, chúc bạn thành công!