Hướng dẫn what are the causes a php error was encountered? - nguyên nhân gây ra lỗi php là gì?

CodeIgniter ném lỗi đã gặp lỗi của PHP khi có một vấn đề trong các mã được sử dụng trong Trang web.

Tại Bobcares, chúng tôi đã thấy một số nguyên nhân gây ra lỗi này trong khi khắc phục sự cố Codeigniter như một phần của dịch vụ quản lý máy chủ của chúng tôi cho người dùng Codeigniter, máy chủ web và nhà cung cấp dịch vụ trực tuyến.

Hôm nay, chúng tôi sẽ xem xét các nguyên nhân hàng đầu cho lỗi này và xem cách khắc phục chúng.

Điều gì gây ra lỗi Codeigniter đã gặp phải lỗi PHP

Lỗi này có thể xảy ra do nhiều lý do khác nhau bao gồm các vấn đề trong mã được sử dụng, bất kỳ vấn đề nào trong máy chủ cơ sở dữ liệu, v.v.

Thông thường, lỗi sẽ ở định dạng dưới đây:

Một lỗi PHP đã gặp phải mức độ nghiêm trọng: Điều này chỉ định mức độ nghiêm trọng của lỗi. Điều này có thể được thông báo hoặc cảnh báo. Thông báo: Nó hiển thị vấn đề nào đã gây ra lỗi này xảy ra. Tên tệp: Nó đề cập đến tệp chính xác do lỗi xảy ra. Số dòng: Ở đây, nó đề cập đến dòng mã gây ra lỗi.
Severity: This specifies the severity of the error. This can be Notice or Warning.
Message: It displays what issue has caused this error to occur.
Filename: It mentions the exact file due to which the error is occurring.
Line Number: Here, it mentions the line of code which is causing the error.

Chẳng hạn, lỗi xuất hiện như dưới đây.

Hướng dẫn what are the causes a php error was encountered? - nguyên nhân gây ra lỗi php là gì?

Cách chúng tôi sửa lỗi Codeigniter đã gặp phải lỗi PHP

Gần đây, một trong những khách hàng của chúng tôi đã tiếp cận chúng tôi với thông báo lỗi Codeigniter tương tự này. Bây giờ, hãy xem cách các kỹ sư hỗ trợ của chúng tôi giúp khách hàng của chúng tôi giải quyết lỗi này.

Ban đầu, chúng tôi đã kiểm tra tệp được đề cập trong thông báo lỗi và xem xét các mã.

Sau đó, chúng ta có thể thấy rằng mẫu trình xây dựng truy vấn đã được thêm không chính xác. Đó là trong mô hình dưới đây.

$query = $db->table->get['table_name'];

Sau đó chúng tôi đã cập nhật mẫu Truy vấn xây dựng như dưới đây.

$query = $db->table->get('table_name');

Điều này cuối cùng, đã sửa lỗi. Tuy nhiên, giải pháp khác nhau theo thông báo lỗi được đề cập trong lỗi.

Hãy để thảo luận về một trường hợp khác mà khách hàng đưa ra thông báo lỗi dưới đây.

A PHP Error was encountered
Severity: Notice
Message: Use of undefined constant user_array - assumed ‘user_array’
Filename: xxx/xxx.php
Line Number: x

Ở đây chúng tôi đã thêm một biểu tượng $ ở đầu tên biến. Điều này đã khắc phục vấn đề.

Hầu hết các khách hàng quên thêm một biểu tượng $ ở đầu tên biến trong khi sử dụng hằng số không xác định.

[Cần bất kỳ hỗ trợ để sửa lỗi Codeigniter? - Chúng tôi sẽ giúp bạn]

Sự kết luận

Nói tóm lại, lỗi Codeigniter này có thể xảy ra khi có vấn đề trong mã được sử dụng trong Trang web. Hôm nay, chúng tôi đã thấy cách các kỹ sư hỗ trợ của chúng tôi khắc phục lỗi này cho khách hàng của chúng tôi.

Đừng bao giờ mất khách hàng với tốc độ máy chủ kém! Hãy để chúng tôi giúp bạn.

Các chuyên gia máy chủ của chúng tôi sẽ giám sát và duy trì máy chủ của bạn 24/7 để nó vẫn nhanh như chớp và an toàn.

BẮT ĐẦU

var google_conversion_label = "owoncmyg5neq0ad71qm";

Xử lý lỗi trong PHP rất đơn giản. Một thông báo lỗi với tên tệp, số dòng và thông báo mô tả lỗi được gửi đến trình duyệt.


Ghi nhật ký lỗi


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 tệp, 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 chức năng error_log(), bạn có thể gửi nhật ký lỗi đến một tệp được chỉ định hoặc đích từ xa.

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

Gửi thông báo lỗi bằng e-mail

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

  • Lỗi: [512] Giá trị phải là 1 hoặc thấp hơn WebMaster đã được thông báo
  • Và thư nhận được từ mã trên có vẻ như sau:
  • Lỗi: [512] Giá trị phải là 1 hoặc thấp hơn

Đ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 xuyên phải được ghi vào máy chủ bằng hệ thống ghi nhật ký PHP mặc định.

Loại lỗi nào có thể xảy ra trong PHP?

Nếu tệp không tồn tại, bạn có thể gặp lỗi như thế này:

CẢNH BÁO: fopen (mytestfile.txt) [function.fopen]: Không thể mở luồng: Không có tệp hoặc thư mục đó trong C: \ WebFolder \ test.php trên dòng 2: fopen(mytestfile.txt) [function.fopen]: failed to open stream:
No such file or directory in C:\webfolder\test.php on line 2

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

Thí dụ

Hãy tự mình thử »
if(file_exists("mytestfile.txt")) {
  $file = fopen("mytestfile.txt", "r");
} else {
  die("Error: The file does not exist.");
}
?>

Hãy tự mình thử »

Bây giờ nếu tệp không tồn tại, bạn sẽ gặp lỗi như thế này:

Lỗi: Tệp không tồn tại.

Mã trên hiệu quả hơn mã trước đó, vì nó sử dụng cơ chế xử lý lỗi đơn giản để dừng tập lệnh sau lỗi.

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



Tạo trình xử lý lỗi tùy chỉnh

Tạo một xử lý lỗi tùy chỉnh khá đơn giản. Chúng tôi chỉ cần tạo một chức năng đặ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: tệp, số dòng và bối cảnh lỗi):

Cú pháp

ERROR_FUNCTION (ERROR_LEVEL, ERROR_MESSAGE, ERROR_FILE, ERROR_LINE, ERROR_CONTEXT)
error_file,error_line,error_context)

Tham sốSự mô tả
ERROR_LEVELYêu cầu. 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 bên dưới để biết các cấp báo cáo lỗi có thể xảy ra
thông báo lỗiYêu cầu. Chỉ định thông báo lỗi cho lỗi do người dùng xác định
ERROR_FILEKhông bắt buộc. Chỉ định tên tệp trong đó xảy ra lỗi
ERROR_LINEKhông bắt buộc. Chỉ định số dòng trong đó xảy ra lỗi
ERROR_CONTEXTKhô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

Mức độ báo cáo lỗi

Các cấp 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:

Giá trịKhông thay đổiSự mô tả
1 ERROR_LEVELYêu cầu. 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 bên dưới để biết các cấp báo cáo lỗi có thể xảy ra
2 thông báo lỗiYêu cầu. Chỉ định thông báo lỗi cho lỗi do người dùng xác định
8 ERROR_FILEKhông bắt buộc. Chỉ định tên tệp trong đó xảy ra lỗi
256 ERROR_LINEKhông bắt buộc. Chỉ định số dòng trong đó xảy ra lỗi
512 ERROR_CONTEXTKhô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
1024 Mức độ báo cáo lỗiCác cấp 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:
2048 Giá trịKhông thay đổi
8191 E_errorMột lỗi thời gian chạy nghiêm trọng. Việc thực thi tập lệnh bị dừng

E_warning

Một lỗi thời gian chạy không gây tử vong. Việc thực thi tập lệnh không bị dừng
  echo "Error: [$errno] $errstr
";
  echo "Ending Script";
  die();
}

E_notice

Một thông báo thời gian chạy. Tập lệnh đã 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 tập lệnh bình thường


E_user_error

Một lỗi do người dùng tạo ra. Điều này giống như một e_error, ngoại trừ nó được tạo bởi tập lệnh PHP bằng cách sử dụng chức năng Trigger_error ()

E_user_warning

Một cảnh báo không phải là người dùng do người sử dụng tạo ra. Điều này giống như một e_warning, ngoại trừ nó được tạo bởi tập lệnh PHP bằng cách sử dụng chức năng Trigger_error ()

E_user_notice

Thí dụ

Một thông báo do người dùng tạo. Điều này giống như một e_notice, ngoại trừ nó được tạo bởi tập lệnh PHP bằng cách sử dụng chức năng Trigger_error ()

E_strict
//error handler function
function customError($errno, $errstr) {
  echo "Error: [$errno] $errstr";
}

Không hoàn toàn là một lỗi.
set_error_handler("customError");

E_all
echo($test);
?>

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 chức năng để xử lý các lỗi: [8] Undefined variable: test


function CustomError ($ errno, $ errstr) {& nbsp; & nbsp; echo "lỗi: [$ errno] $ errstr"; & nbsp; & nbsp; echo "kết thúc tập lệnh"; & nbsp; & nbsp; die (); }

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

Thí dụ

Bây giờ chúng tôi đã tạo ra một chức năng xử lý lỗi, chúng tôi cần quyết định khi nào nó nên được kích hoạt.

Đặt trình xử lý lỗi
$test=2;
if ($test>=1) {
  trigger_error("Value must be 1 or below");
}
?>

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 chức năng để xử lý các lỗi:: Value must be 1 or below
in C:\webfolder\test.php on line 6

function CustomError ($ errno, $ errstr) {& nbsp; & nbsp; echo "lỗi: [$ errno] $ errstr"; & nbsp; & nbsp; echo "kết thúc tập lệnh"; & nbsp; & nbsp; die (); }

Các loại lỗi có thể có:

  • E_USER_ERROR-Lỗi thời gian chạy do người dùng gây tử vong. Lỗi không thể phục hồi từ. Việc thực thi tập lệnh bị tạm dừng
  • E_USER_WARNING-Cảnh báo thời gian chạy do người dùng không phù hợp. Việc thực thi tập lệnh 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. Tập lệnh đã 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 tập lệnh bình thường

Thí dụ

Trong ví dụ này, một biến số 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 tôi sẽ sử dụng trình xử lý lỗi tùy chỉnh của chúng tôi và kết thúc tập lệnh:

//error handler function
function customError($errno, $errstr) {
  echo "Error: [$errno] $errstr
";
  echo "Ending Script";
  die();
}

// Đặt lỗi Handler set_error_handler ("CustomError", e_user_warning);
set_error_handler("customError",E_USER_WARNING);

// lỗi kích hoạt $ test = 2; if ($ test> = 1) & nbsp; {& nbsp; & nbsp; trigger_error ("giá trị phải là 1 hoặc thấp hơn", e_user_warning); }?>
$test=2;
if ($test>=1) {
  trigger_error("Value must be 1 or below",E_USER_WARNING);
}
?>

Đầu ra của mã trên phải là một cái gì đó như thế này:

Lỗi: [512] Giá trị phải là 1 hoặc dưới tập lệnh kết thúc [512] Value must be 1 or below
Ending Script

Bây giờ chúng tôi đã học cách tạo ra các lỗi của riêng mình và cách kích hoạt chúng, hãy xem xét việc ghi nhật ký lỗi.


Ghi nhật ký lỗi

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 tệp, 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 chức năng error_log(), bạn có thể gửi nhật ký lỗi đến một tệp được chỉ định hoặc đích từ xa.

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

Gửi thông báo lỗi bằng e-mail

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

// Đặt lỗi Handler set_error_handler ("CustomError", e_user_warning);
//error handler function
function customError($errno, $errstr) {
  echo "Error: [$errno] $errstr
";
  echo "Webmaster has been notified";
  error_log("Error: [$errno] $errstr",1,
  "","From: ");
}

// Đặt lỗi Handler set_error_handler ("CustomError", e_user_warning);
set_error_handler("customError",E_USER_WARNING);

// lỗi kích hoạt $ test = 2; if ($ test> = 1) & nbsp; {& nbsp; & nbsp; trigger_error ("giá trị phải là 1 hoặc thấp hơn", e_user_warning); }?>
$test=2;
if ($test>=1) {
  trigger_error("Value must be 1 or below",E_USER_WARNING);
}
?>

Đầu ra của mã trên phải là một cái gì đó như thế này:

Lỗi: [512] Giá trị phải là 1 hoặc dưới tập lệnh kết thúc [512] Value must be 1 or below
Webmaster has been notified

Bây giờ chúng tôi đã học cách tạo ra các lỗi của riêng mình và cách kích hoạt chúng, hãy xem xét việc ghi nhật ký lỗi.

Ghi nhật ký lỗi

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 tệp, 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 chức năng error_log(), bạn có thể gửi nhật ký lỗi đến một tệp được chỉ định hoặc đích từ xa.



Loại lỗi nào có thể xảy ra trong PHP?

Trong PHP, chủ yếu là bốn loại lỗi được xem xét: lỗi cú pháp hoặc lỗi phân tích cú pháp.Lỗi nghiêm trọng.Lỗi cảnh báo.

Lỗi PHP đã gặp phải cảnh báo nghiêm trọng là gì?

Một Lỗi PHP đã gặp phải.Mức độ nghiêm trọng: Điều này chỉ định mức độ nghiêm trọng của lỗi.Điều này có thể được thông báo hoặc cảnh báo.Thông báo: Nó hiển thị vấn đề nào đã gây ra lỗi này xảy ra.Tên tệp: Nó đề cập đến tệp chính xác do lỗi xảy ra.

Những lỗi nào được kích hoạt bởi động cơ PHP?

Xử lý lỗi PHP..
Máy chủ web có thể hết dung lượng đĩa ..
Người dùng có thể đã nhập một giá trị không hợp lệ trong trường biểu mẫu ..
Tệp hoặc bản ghi cơ sở dữ liệu mà bạn đang cố gắng truy cập có thể không tồn tại ..
Ứng dụng có thể không có quyền ghi vào tệp trên đĩa ..

Lỗi PHP ở đâu?

Vị trí của tệp nhật ký lỗi có thể được đặt thủ công trong PHP.Tệp INI.Trên máy chủ Windows, trong IIS, nó có thể là một cái gì đó giống như "'error_log = c: \ log_files \ php_errors.log'" Trong Linux, nó có thể là giá trị của "'/var/log/php_errors.C:\log_files\php_errors. log'" in Linux it may be a value of "'/var/log/php_errors.