Hiển Thị Lỗi Trong PHP như thế nào ?

Nếu bạn là một nhà phát triển PHP, việc xử lý lỗi trong quá trình chạy script là điều không thể thiếu. PHP cung cấp bốn cách khác nhau để hiển thị các lỗi và cảnh báo, trong bài viết này, chúng tôi sẽ giới thiệu đến bạn cách hiển thị tất cả các lỗi trong PHP.

Lập Trình Viên mời bạn cùng tham khảo chi tiết nội dung bên dưới. Bài viết này nằm trong chuyên đề hướng dẫn PHP từ cơ bản đến nâng cao tại dự án Phát Triển Website.

Hiển Thị Lỗi Trong PHP

Đầu tiên, chúng ta sẽ xem xét một số dòng mã được cung cấp dưới đây để thêm vào tệp PHP của bạn để hiển thị các lỗi. Đây là cách nhanh nhất để hiển thị tất cả các lỗi và cảnh báo trong PHP.

ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);

Các hàm và chỉ thị trên hoạt động như sau:

  • ini_set(): Hàm này cố gắng ghi đè cấu hình được tìm thấy trong tệp php.ini.
  • display_errors: chỉ thị này xác định liệu lỗi có hiển thị cho người dùng hay không. Nó không xử lý các lỗi xảy ra trong chuỗi khởi động của PHP.
  • display_startup_errors: chỉ thị này cũng là một chỉ thị, được sử dụng để tìm lỗi trong chuỗi khởi động của PHP.
  • error_reporting(): Đây là một hàm nguyên bản của PHP. Nó được sử dụng để hiển thị các lỗi.

Cấp độ báo cáo lỗi

Trước khi thảo luận về cách hiển thị lỗi trong PHP, chúng ta nên hiểu rõ các cấp độ báo cáo lỗi mà PHP cung cấp:

  • E_ERROR: lỗi nghiêm trọng, các lỗi này không thể được phục hồi và chương trình sẽ dừng lại.
  • E_WARNING: cảnh báo nghiêm trọng, cần phải được xử lý nhưng không ngăn chặn chương trình chạy tiếp tục.
  • E_PARSE: lỗi cú pháp, xảy ra khi mã không tuân thủ hoàn toàn với cú pháp PHP.
  • E_NOTICE: thông báo lỗi, thông báo cho bạn biết rằng có một vấn đề mà không cần phải dừng chương trình.
  • E_CORE_ERROR: lỗi nghiêm trọng xảy ra trong quá trình khởi động của PHP.
  • E_CORE_WARNING: cảnh báo nghiêm trọng xảy ra trong quá trình khởi động của PHP.
  • E_COMPILE_ERROR: lỗi xảy ra trong quá trình biên dịch mã.
  • E_COMPILE_WARNING: cảnh báo xảy ra trong quá trình biên dịch mã.
  • E_USER_ERROR: lỗi được tạo ra bởi người dùng.
  • E_USER_WARNING: cảnh báo được tạo ra bởi người dùng.
  • E_USER_NOTICE: thông báo được tạo ra bởi người dùng.
  • E_STRICT: cảnh báo về việc sử dụng code không đúng chuẩn.
  • E_RECOVERABLE_ERROR: Lỗi nghiêm trọng nhưng có thể phục hồi được.

Chỉ thị hiển thị lỗi trong PHP

Có ba chỉ thị PHP để hiển thị lỗi trong PHP với quá trình chạy script:

  1. error_reporting: Nó hiển thị tất cả các cấp độ lỗi ngoại trừ các cấp độ E-NOTICE, E-STRICT và E_DEPRECATED.
  2. display_errors: Theo mặc định, giá trị của chỉ thị này là tắt. Đặt nó thành on để hiển thị tất cả các lỗi, bao gồm cả lỗi cú pháp.
  3. log_errors: Giá trị mặc định của chỉ thị này là ON, cho biết liệu có nên hoặc không ghi nhật ký lỗi.
  4. error_log string: Chuỗi error_log xác định tên tệp nơi các lỗi của script được ghi lại.

Lưu ý rằng, các chỉ thị display_errors và display_startup_errors sẽ không thể hiển thị các lỗi cú pháp. Do đó, cấu hình PHP.ini phải được sửa đổi để hiển thị tất cả các lỗi và cảnh báo.

Cấu hình PHP.ini để hiển thị tất cả các lỗi và cảnh báo

Để hiển thị tất cả Hiển Thị Lỗi Trong PHP, bao gồm cả lỗi cú pháp, bạn cần thực hiện các thay đổi sau trong tệp PHP.ini:

  1. Đặt chỉ thị display_errors thành on trong tệp PHP.ini. Nó sẽ hiển thị tất cả các lỗi, không thể hiển thị bằng cách chỉ gọi hàm ini_set(). Ví dụ: display_errors = On
  2. Đặt chỉ thị error_reporting thành cấp độ lỗi tối đa. Ví dụ: error_reporting = E_ALL
  3. Khởi động lại máy chủ Apache trong XAMPP để áp dụng các thay đổi trên.

Chương trình

Dưới đây là một ví dụ về chương trình PHP khi chỉ thị display_errors bị tắt hoặc được đặt thành off trong tệp PHP.ini.

<?php
    // Turn off display errors
    ini_set('display_errors', 0);
    // Generate a warning
    echo $undefined_variable;
?>

Nếu chỉ thị display_errors được đặt thành tắt, không có thông báo lỗi nào sẽ hiển thị cho người dùng. Tuy nhiên, bạn có thể tìm thấy thông báo lỗi trong tệp nhật ký của máy chủ.

Cách hiển thị lỗi trong PHP cụ thể

Có nhiều cách để hiển thị lỗi trong PHP. Bạn có thể sử dụng các hàm sau:

  • die(): Dừng ngay lập tức quá trình thực thi chương trình và hiển thị thông báo lỗi.
  • exit(): Dừng ngay lập tức quá trình thực thi chương trình và trả về mã số thoát.
  • error_reporting(): Thiết lập mức độ báo lỗi.
  • set_error_handler(): Cài đặt hàm xử lý lỗi tùy chỉnh.
  • try/catch:** Sử dụng ngoại lệ để xử lý lỗi.

Sử dụng die()

Hàm die() là cách đơn giản nhất để hiển thị lỗi trong PHP. Hàm này sẽ dừng ngay lập tức quá trình thực thi chương trình và hiển thị thông báo lỗi.

// Hiển thị lỗi bằng die()
$a = 10;
$b = 20;
$c = $a + $b;

// Cú pháp sai
$c = $a + $b;

// Hiển thị lỗi
die("Có lỗi xảy ra: Cú pháp sai");

Sử dụng exit()

Hàm exit() cũng tương tự như die(), nhưng hàm này sẽ trả về mã số thoát.

// Hiển thị lỗi bằng exit()
$a = 10;
$b = 20;
$c = $a + $b;

// Cú pháp sai
$c = $a + $b;

// Hiển thị lỗi
exit("Có lỗi xảy ra: Cú pháp sai");

Sử dụng error_reporting()

Hàm error_reporting() cho phép bạn chỉ định mức độ báo lỗi. Theo mặc định, PHP sẽ chỉ báo lỗi nghiêm trọng (E_ERROR). Để hiển thị tất cả lỗi, bạn có thể sử dụng hàm này để đặt mức báo lỗi thành E_ALL.

// Hiển thị tất cả lỗi
error_reporting(E_ALL);

// Lỗi cú pháp
$a = 10;
$b = 20;
$c = $a + $b;

// Cú pháp sai
$c = $a + $b;

Sử dụng set_error_handler()

Hàm set_error_handler() cho phép bạn cài đặt hàm xử lý lỗi tùy chỉnh. Hàm này sẽ được gọi khi xảy ra lỗi.

// Hiển thị lỗi bằng hàm xử lý lỗi tùy chỉnh
function my_error_handler($errno, $errstr, $file, $line) {
  echo "Có lỗi xảy ra: $errstr";
}

// Cài đặt hàm xử lý lỗi
set_error_handler("my_error_handler");

// Lỗi cú pháp
$a = 10;
$b = 20;
$c = $a + $b;

// Cú pháp sai
$c = $a + $b;

Sử dụng try/catch

Sử dụng ngoại lệ là cách tốt nhất để xử lý lỗi trong PHP. Ngoại lệ là một cách để xử lý các lỗi một cách an toàn và hiệu quả.

// Hiển thị lỗi bằng try/catch
try {
  $a = 10;
  $b = 20;
  $c = $a + $b;
} catch (Exception $e) {
  echo "Có lỗi xảy ra: " . $e->getMessage();
}

Trong ví dụ trên, hàm try/catch sẽ bắt lỗi Division by zero và hiển thị thông báo lỗi.

Dưới đây là một số mẹo để hiển thị lỗi hiệu quả:

  • Hiển thị thông tin đầy đủ về lỗi, bao gồm mã lỗi, thông báo lỗi, và vị trí lỗi.
  • Sử dụng thông báo lỗi thân thiện với người dùng.
  • Hiển thị lỗi một cách an toàn và hiệu quả.

Kết luận

Trong bài viết này, chúng tôi đã giới thiệu đến bạn cách hiển thị lỗi trong PHP bằng cách sử dụng các chỉ thị và hàm như ini_set()display_errorsdisplay_startup_errors và error_reporting(). Ngoài ra, chúng tôi cũng đã hướng dẫn cấu hình tệp PHP.ini để hiển thị tất cả các lỗi và cảnh báo. Hy vọng bài viết sẽ hữu ích cho quá trình phát triển web của bạn.