Hiển thị lỗi ở các cấp độ khác nhau trong PHP

Khi làm việc với một trang web, mọi nhà phát triển đều gặp phải tình huống khi kích hoạt một mô-đun, thêm mã của riêng mình hoặc thực hiện các thay đổi khác cho trang web, cái gọi là Màn hình trắng chết chóc (Màn hình trắng chết), thường do lỗi PHP. Hành động đầu tiên của nhà phát triển đương nhiên là khôi phục những thay đổi dẫn đến lỗi này. Nhưng lỗi cần phải được sửa, có nghĩa là chúng ta cần xem xét chính xác nguyên nhân gây ra lỗi đó.

Thật tốt nếu nhà phát triển có cơ hội xem nhật ký Apache. Nhưng ở đây khó khăn nảy sinh: không phải mọi chủ nhà đều duy trì chúng và không phải lập trình viên nào cũng có quyền truy cập vào chúng. Cuối cùng, để xem chúng, bạn sẽ phải vào máy chủ. Nhưng tất cả các lập trình viên đều lười biếng, điều đó có nghĩa là chúng ta cần tìm kiếm một giải pháp đơn giản hơn. Và giải pháp này là hiển thị trực tiếp lỗi lên màn hình.

Tôi không tính đến trang trong Drupal cho phép bạn hiển thị lỗi trên màn hình (quản trị viên/cài đặt/báo cáo lỗi), bởi vì... Nó sẽ không cứu bạn khỏi màn hình trắng. Nó hiển thị các lỗi làm hỏng các mô-đun chứ không phải toàn bộ trang web. Những thứ kia. nếu bạn quên đặt nó (ví dụ) issetđối với một biến có thể không được xác định, một lỗi sẽ được hiển thị trên màn hình. Nhưng nếu bạn quên đặt dấu chấm phẩy sau khi thực hiện thao tác thì Drupal sẽ không hiển thị lỗi này nữa và bạn sẽ thấy màn hình trắng.

Có một số cách để kích hoạt đầu ra lỗi.

Cách 1: Kích hoạt hiển thị lỗi qua php.ini

Nếu bạn có quyền truy cập (à, nếu) vào máy chủ thì sao tập tin cấu hình php.ini tìm tham số báo cáo lỗi và đặt giá trị của nó thành E_ALL.

Error_reporting = E_ALL

Cách 2. Kích hoạt hiển thị lỗi qua .htaccess

Ở thư mục gốc của Drupal có tệp .htaccess điều chỉnh quá trình tải trang. Để kích hoạt tính năng nhắn tin, hãy mở nó và thêm hai dòng sau:

Php_flag display_errors trên php_flag display_startup_errors trên

Cách 3. Kích hoạt hiển thị lỗi qua index.php

Hãy chạm lại vào các tập tin trong thư mục gốc Drupal, nhưng lần này chỉ mục.php. Ở đây, để hiển thị thông báo, bạn cần thêm error_reporting(7) trước dòng có kết nối bootstrap.ini:

Error_reporting(7); require_once "./includes/bootstrap.inc" ;

Cách 4: Kích hoạt hiển thị lỗi qua settings.php

Tôi sẽ nói ngay rằng phương pháp này chỉ hiệu quả với Drupal 7. Có một tệp settings.php trong thư mục site/default/. Mở nó và thêm những dòng này:

Error_reporting(-1); $conf [ "error_level" ] = 2 ; ini_set ("display_errors", TRUE ); ini_set ("display_startup_errors", TRUE );

Cho dù một lập trình viên web có cẩn thận và chu đáo đến đâu thì vẫn có thể xảy ra lỗi và thiếu chính xác trong quá trình làm việc. Kết quả là, điều này có thể dẫn đến lỗi trang web hoặc dịch vụ. Để gỡ lỗi trong quá trình phát triển dự án, có thể kích hoạt tính năng xuất lỗi trong PHP.

Làm thế nào nó hoạt động?

PHP chắc chắn phản ứng với mã script này hoặc mã script đó. Trong một số trường hợp, nó thực hiện hành động được yêu cầu, trong một số trường hợp khác, nó hiển thị lỗi. Cơ chế này giúp nhà phát triển nhanh chóng sửa lỗi tại thời điểm triển khai một đoạn mã.

Tuy nhiên, lỗi xuất ra trong PHP không phải lúc nào cũng cần thiết. Sau khi quá trình phát triển dự án hoàn tất, chức năng này sẽ bị tắt để tránh bị hack hoặc truy cập trái phép.

Cài đặt

Tệp php.ini chịu trách nhiệm về toàn bộ cấu hình của trình thông dịch PHP. Nó chứa chỉ thị error_reporting, xác định kết quả đầu ra của lỗi trong PHP. Tuy nhiên, mặc dù nó bao gồm việc xử lý ngoại lệ, nhưng display_errors chịu trách nhiệm hiển thị chúng trong cửa sổ trình duyệt. Nếu tắt, hệ thống sẽ hiển thị một trang trống thay vì hiển thị lỗi.

Phân loại ngoại lệ

Lỗi đầu ra trong PHP có thể được chia thành nhiều loại:

    lỗi sẽ khiến tập lệnh ngừng chạy. Cái gọi là gây tử vong. Chúng bao gồm E_ERROR, E_COMPILE_ERROR;

    những lỗi có thể sửa được. Các giá trị của chúng cho lệnh error_reporting có thể là: E_WARNING, E_NOTICE và các giá trị khác.

Cần xem xét từng loại chi tiết hơn và mô tả chức năng của nó.

    E_ERROR. Thông thường, loại này đề cập đến các lỗi không thể giải quyết nhanh chóng hoặc không thể tiếp tục tập lệnh. Chúng có thể bao gồm các vấn đề về phân bổ bộ nhớ;

    E_CẢNH BÁO. Mã sẽ tiếp tục hoạt động, nhưng một cảnh báo sẽ được hiển thị cho biết có một số loại lỗi, mã lỗi được chỉ định trong thông báo. Không quan trọng;

    Đ_THÔNG BÁO. Thông báo cho biết có điều gì đó đã xảy ra và có thể gây ra lỗi. Cũng không quan trọng đối với việc thực thi mã;

    E_USER_ERROR. Lỗi do chính người dùng tạo ra;

    E_ALL. Điều này bao gồm tất cả các loại lỗi. Thường xuyên, tùy chọn nàyđược bật theo mặc định khi cài đặt trình thông dịch.

Cách bật đầu ra lỗi trong PHP

Phương pháp sử dụng cơ chế lỗi trong PHP có thể khác nhau tùy thuộc vào nơi mã được sử dụng - trên máy chủ hoặc trên máy tính cục bộ. Trong trường hợp thứ hai, nhà phát triển có thể định cấu hình máy chủ của mình và hiển thị theo ý muốn, cụ thể là thay đổi cấu hình trong tệp php.ini. Chỉ cần chuyển đổi hai lệnh - display_errors và error_reporting thành dạng sau là đủ:

display_errors bật

error_báo cáo E_ALL

Các lệnh này sẽ cho phép bạn hiển thị tất cả các thông báo lỗi trực tiếp trong cửa sổ trình duyệt.

Nếu việc phát triển được thực hiện trên lưu trữ ảo, thì chức năng hiển thị lỗi thường bị tắt ở đó vì lý do bảo mật. Do đó, để kích hoạt nó, bạn sẽ cần sử dụng tệp cài đặt máy chủ Apache htaccess. Nó thường nằm ở thư mục gốc của trang web. Bạn cần thêm một vài dòng vào nó bằng bất kỳ trình soạn thảo văn bản nào:

bật php_flag display_errors

báo cáo lỗi php_value -1

Bạn cũng có thể hiển thị lỗi trực tiếp từ mã bằng hàm ini_set(). Tuy nhiên, điều đáng lưu ý là sau khi hoàn thành quá trình phát triển trang web, việc sử dụng nó có thể gây ra các vấn đề về bảo mật.

Viết vào tập tin

PHP cho phép bạn lưu tất cả các lỗi xảy ra ở một vị trí cụ thể trên ổ cứng. Để đưa đầu ra lỗi PHP vào một tệp, bạn có thể sử dụng ba phương pháp:

    chỉnh sửa tệp php.ini. Ở đây bạn cần xác định hai dòng. Đầu tiên là log_errors = On, nó thực sự kích hoạt tùy chọn đầu ra. Thứ hai là error_log = đường dẫn/đến tệp/mong muốn.

    Thay đổi htaccess. Bạn cũng có thể thêm hai dòng vào nó. php_value log_errors "bật" và đường dẫn/tệp php_value error_log.

    Sử dụng hàm ini_set ở vị trí bắt buộc trong mã.

Phần kết luận

Lỗi đầu ra trong PHP - công cụ cần thiết trong việc gỡ lỗi mã. Nhưng nó cũng có thể tạo ra những khu vực dễ bị tổn thương. Vì vậy, bạn cần sử dụng cơ chế này một cách thận trọng và cẩn thận. Sau khi một trang web hoặc dịch vụ đã vượt qua tất cả các giai đoạn thử nghiệm, bạn cần đảm bảo rằng trang web hoặc dịch vụ đó không hiển thị các lỗi có thể bị kẻ tấn công lợi dụng để giành quyền truy cập vào dữ liệu quan trọng.

PHP là một ngôn ngữ lập trình khá miễn phí và theo tôi đây là một điểm trừ lớn. Nhược điểm chính ở đây là một số cấu trúc trong các ngôn ngữ khác sẽ ngay lập tức vô hiệu hóa việc thực thi chương trình, trong PHP là điều bình thường và hoàn toàn có thể chấp nhận được. Nhưng nếu bạn muốn viết mã đúng ngay từ đầu thì bạn cần biết về cách hiển thị lỗi cấp độ khác nhau .

TRONG PHP có nhiều mức độ lỗiđược trình bày ở bảng dưới đây:

E_CẢNH BÁO Các loại cảnh báo khác nhau. Ví dụ: nếu một chức năng yêu cầu 3 tham số và bạn chỉ chuyển 2 , thì sẽ chỉ có lỗi cấp độ E_CẢNH BÁO.
E_NOTICE Tương tự như E_CẢNH BÁO, nhưng đây là những lỗi rất nhỏ và chúng chỉ có thể gây ra lỗi trong tương lai. Ví dụ: Sử dụng một biến chưa được khởi tạo. tôi có thể nói rằng cấp độ này lỗi xảy ra ở hầu hết mọi tập lệnh phức tạp ít nhiều.
E_KHÔNG DÙNG Mức độ lỗi này xảy ra khi sử dụng các cấu trúc lỗi thời, chẳng hạn như khi gọi một số hàm cũ.
E_PARSE Lỗi cú pháp. Ví dụ, họ quên đặt dấu ngoặc đơn.
E_ERROR Một lỗi mà chúng ta rất quen thuộc. Theo quy định, chúng tôi gặp cô ấy thường xuyên nhất. Ví dụ đơn giản nhất là gọi một hàm không tồn tại.
E_ALL Tất cả các lỗi.

Hầu hết các máy chủ đều hiển thị lỗi ở cấp độ E_WARNING, E_PARSE và E_ERROR. Đó là những lời nhận xét rất thô lỗ và lỗi nghiêm trọng. Nếu bạn muốn lập trình một cách chuyên nghiệp thì chỉ theo dõi những lỗi như vậy thôi là chưa đủ.

error_reporting(E_ALL);
?>

Và điều này nên được viết trước khi bắt đầu mỗi tập lệnh. Nếu như phương pháp này rất bất tiện và bạn có quyền truy cập vào php.ini, thì trong tệp này hãy tìm lệnh báo cáo lỗi và gán cho nó một giá trị E_ALL.

Nếu bạn ở cùng xuất ra mức lỗi này trong PHP viết mã mà không có một nhận xét nào, thì điều đó có nghĩa là ít nhất bạn đã tạo ra một sản phẩm tốt. Khi bạn tải nó lên hosting của mình, tôi khuyên bạn nên xóa mức độ lỗi này để thỉnh thoảng chúng không xuất hiện. Rốt cuộc PHP cũng đang được cập nhật và những thiết kế mới của hôm nay có thể trở nên lỗi thời vào ngày mai. Và để không gây ra lỗi cấp độ E_KHÔNG DÙNG, Tôi khuyên bạn nên tắt hiển thị các lỗi như vậy.

Khi gỡ lỗi các tập lệnh trong PHP, trình duyệt thường gặp phải “màn hình trắng”. Mà trong hầu hết các trường hợp chỉ ra một điểm dừng Thực thi PHP mã do có lỗi. Trình thông dịch PHP cho phép bạn hiển thị thông tin dịch vụ về lỗi trên màn hình, điều này hỗ trợ rất nhiều cho việc gỡ lỗi. Nhưng theo mặc định (trong hầu hết các trường hợp), hành vi này bị vô hiệu hóa vì lý do bảo mật, tức là các thông báo lỗi PHP không được hiển thị trên màn hình.

Trong bài viết này tôi sẽ cho bạn biết cách làm cho PHP hiển thị thông báo lỗi trên màn hình điều khiển trong cửa sổ trình duyệt. Hướng dẫn có giá trị cho trường hợp bạn sử dụng web máy chủ Apache và liệu PHP cho trang web của bạn có được kết nối dưới dạng mô-đun Apache hay không.

Hiển thị lỗi trên màn hình chỉ nên được bật khi gỡ lỗi trang web. Sự hiện diện của mã như vậy có thể tác động tiêu cực đến tính bảo mật của ứng dụng web.

Cho phép hiển thị lỗi PHP trên màn hình bằng tệp .htaccess

Cái này rất Một cách thuận tiệnđể gỡ lỗi mã PHP. Hoạt động trong hầu hết các trường hợp. Trong thư mục có tập lệnh trên trang web, chúng tôi đặt tệp .htaccess với nội dung sau:

Php_flag display_errors trên php_flag display_startup_errors trên php_flag error_reporting E_ALL

  • display_errors- bao gồm tùy chọn hiển thị lỗi trên màn hình cùng với phần còn lại của mã.
  • display_startup_errors- cho phép tùy chọn hiển thị các lỗi xảy ra khi PHP khởi động khi lệnh display_errors chưa hoạt động.
  • báo cáo lỗi- cho biết lỗi nào được hiển thị theo mức độ quan trọng. Khi lệnh được đặt thành E_ALL tất cả các lỗi được hiển thị.

Cho phép xuất ra lỗi PHP để sàng lọc trong mã tệp PHP

Phương pháp này thuận tiện vì bạn kiểm soát việc hiển thị lỗi trên màn hình trong chính tập lệnh PHP. Các tham số được đặt bằng hàm ini_set() có nhiều hơn ưu tiên cao và ghi đè chỉ thị php.ini.htaccess. Đặt đoạn mã sau vào sự khởi đầu của PHP tài liệu:

Ini_set("display_errors", 1); ini_set("display_startup_errors", 1); ini_set("error_reporting", E_ALL);

Cho phép hiển thị lỗi PHP trên màn hình bằng tệp php.ini

Phương pháp này có liên quan khi bạn là quản trị viên máy chủ. Trong tập tin php.ini biên tập dòng sau(thêm nếu cần):

Display_errors = Bật display_startup_errors = Bật error_reporting = E_ALL

Cách tốt nhất để hiển thị lỗi PHP trên màn hình

Theo tôi cho người dùng trung bình thuận tiện nhất để sử dụng .htaccess, đặc biệt nếu bạn có nhiều hơn một tệp PHP. Phương pháp số 2 thuận tiện cho việc gỡ lỗi một tập tin phpđể không ảnh hưởng đến mức đầu ra lỗi cho người khác tập lệnh php. Tùy chọn với php.ini Chỉ thích hợp cho quản trị viên máy chủ, nhưng tác dụng của nó áp dụng cho tất cả các trang web nằm trên máy chủ này.

Sự nhìn nhận

Các nguồn sau đây đã được sử dụng khi viết bài viết này.


Hãy cùng tìm hiểu cách bật/tắt hiển thị lỗi trên trang web. Thông qua bảng quản trị và thông qua tệp htaccess.

Việc hiển thị các lỗi (Thông báo, Cảnh báo, Lỗi nghiêm trọng) là quan trọng và chức năng cần thiết, thật tốt khi cô ấy tồn tại! Nếu không, quản trị viên web sẽ mất hàng tháng trời để tìm kiếm lỗi trong mã trang web của họ theo cách thủ công.

Làm cách nào để bật hiển thị lỗi từ bảng quản trị Joomla 3?

Để thực hiện việc này, trong bảng quản trị Joomla hãy vào “Hệ thống - Cài đặt chung”.

Chuyển đến tab "Máy chủ", ở đó bạn sẽ thấy tùy chọn "Thông báo lỗi". Chọn chế độ "Tối đa".

Cứu.

Sau đó, các thông báo lỗi, nếu có, sẽ xuất hiện trên các trang của trang web. Điều này rất hữu ích nếu bạn gặp phải màn hình trắng ở đâu đó trên trang web.

Sau khi cho phép thông báo lỗi xuất hiện trên màn hình trắng, bạn sẽ thấy loại lỗi và mô tả của nó.
Sử dụng mô tả này, bạn có thể tìm thấy giải pháp trong tìm kiếm Yandex hoặc Google.

Bật hiển thị lỗi php qua config.php

Nếu bạn không có quyền truy cập vào bảng quản trị hoặc nó không hoạt động, bạn có thể bật hiển thị lỗi thông qua tệp config.php, nằm trong thư mục gốc của trang web của bạn.

Nó chứa một chỉ thị

công khai $error_reporting = "mặc định";

Để bật hiển thị lỗi, hãy thay đổi mặc định thành tối đa

Cách bật hiển thị lỗi qua .htaccess

Nếu bạn không có Joomla nhưng tập lệnh của riêng bạn hoặc vì lý do nào đó bạn không thể bật thông báo lỗi theo hai cách đầu tiên, thì việc này có thể được thực hiện thông qua tệp .htaccess, cũng nằm trong thư mục gốc của trang web của bạn.

Mở .htaccess - chú ý đến dấu chấm phía trước. Nếu bạn không có một tập tin như vậy, thì hãy tạo nó.
TRONG Hệ thống CMS nó thường được gọi là htaccess.txt và có thể đổi tên đơn giản thành .htaccess

Ở trên cùng thêm dòng:

bật php_flag display_errors

Và dòng:

tắt php_flag display_errors

tắt hiển thị lỗi.

Có những loại thông báo lỗi php nào?

Phổ biến nhất là:

Để ý- thông báo về các lỗi nhỏ trong mã. Thông thường, chức năng của trang web vẫn còn nguyên.

Những thông báo này chỉ xuất hiện trong tiêu đề.

Cảnh báo- cảnh báo về các lỗi nghiêm trọng hơn. Đôi khi, với cảnh báo như vậy, chức năng của trang web vẫn còn, đôi khi là màn hình trắng.