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

Cảnh báo là lỗi xảy ra khi có điều gì đó có thể không được mong đợi hoặc mong muốn và các nhà phát triển nói chung cố gắng tính đến chúng trong mã của họ để tránh các sự cố nghiêm trọng

1236 lượt xem

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

Bởi. Jacob

Đã chỉnh sửa. 2021-04-18 08. 47

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

Lỗi E_WARNING không phải lúc nào cũng nghiêm trọng và thường thì bạn có thể bỏ qua nó một cách an toàn. Tuy nhiên, tốt nhất là bạn nên cố gắng tránh các cảnh báo trước khi chúng xảy ra

Cảnh báo có thể được kích hoạt khi bao gồm tệp không tồn tại và khi gửi tiêu đề HTTP sau khi gửi đầu ra phần thân HTTP. Ngoài ra còn có các nguyên nhân khác gây ra lỗi này và thường xảy ra nhất là do có điều gì đó mà nhà phát triển đã bỏ qua

Để chỉ hiển thị lỗi E_WARNING, bạn có thể sử dụng hàm error_reporting

error_reporting(E_WARNING);

Thay vào đó, để hiển thị tất cả các lỗi, hãy sử dụng E_ALL

error_reporting(E_ALL);

Thông báo lỗi tùy chỉnh

Để kích hoạt lỗi cảnh báo tùy chỉnh, nên sử dụng loại E_USER_WARNING

trigger_error("This situation was not expected, but assuming the developer knows about it, we continue!", E_USER_WARNING);

Ghi chú. Chỉ nên sử dụng các loại E_USER* với trigger_error

Nguyên nhân của E_WARNING

Cố gắng gửi các tiêu đề sau khi chúng đã được gửi trước đó trong mã sẽ dẫn đến

Cảnh báo PHP. Không thể sửa đổi thông tin tiêu đề - tiêu đề đã được gửi vào

Một nguyên nhân phổ biến khác là bao gồm việc cố gắng bao gồm một tệp không tồn tại

[php7. cảnh báo] [pid 8544] [khách hàng 127. 0. 0. 1. 57390] Cảnh báo PHP. bao gồm (kiểm tra. php). không thể mở luồng. Không có tệp hoặc thư mục như vậy trong/var/www/test/test. php trên dòng 3

Một ứng dụng PHP có thể tạo ra nhiều mức thu nhập và lỗi khác nhau trong quá trình thực thi. Có thể thấy những lỗi này là điều cần thiết cho các nhà phát triển đang cố gắng khắc phục sự cố ứng dụng hoạt động sai. Tuy nhiên, các nhà phát triển thường gặp sự cố khi cố gắng hiển thị lỗi từ các ứng dụng PHP của họ. Thay vào đó, ứng dụng của họ chỉ âm thầm thất bại

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

Nếu bạn gặp sự cố với ứng dụng web PHP của mình và cần hiển thị tất cả các lỗi và cảnh báo, bạn đang ở đúng nơi. Trong hướng dẫn này, chúng tôi sẽ giải thích tất cả các cách khác nhau để bật lỗi và cảnh báo PHP. Chúng tôi cũng sẽ thảo luận về cách ghi lỗi vào tệp nhật ký và thậm chí thu thập chúng thông qua tính năng theo dõi lỗi của Truy xuất

Mẹo. Tìm lỗi ứng dụng và các vấn đề về hiệu suất ngay lập tức với Stackify Retrace

Khắc phục sự cố và tối ưu hóa mã của bạn thật dễ dàng với các lỗi tích hợp, nhật ký và thông tin chi tiết về hiệu suất cấp mã

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

Nhanh chóng hiển thị tất cả các lỗi PHP

Cách nhanh nhất để hiển thị tất cả lỗi và cảnh báo php là thêm những dòng này vào tệp mã PHP của bạn

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

Chính xác những dòng mã này làm gì?

Hàm ini_set sẽ cố gắng ghi đè cấu hình được tìm thấy trong tệp ini PHP của bạn

display_errors và display_startup_errors chỉ là hai trong số các lệnh có sẵn. Chỉ thị display_errors sẽ xác định xem các lỗi sẽ được hiển thị hay ẩn đối với người dùng. Thông thường, nên tắt chỉ thị dispay_errors sau khi phát triển

Tuy nhiên, display_startup_errors là một lệnh riêng vì display_errors không xử lý các lỗi sẽ gặp phải trong trình tự khởi động của PHP. Danh sách các lệnh có thể bị ghi đè bởi chức năng ini_set được tìm thấy trong tài liệu chính thức

Thật không may, hai lệnh này sẽ không thể hiển thị các lỗi phân tích cú pháp như thiếu dấu chấm phẩy hoặc thiếu dấu ngoặc nhọn. Trong trường hợp này, cấu hình PHP ini phải được sửa đổi

Định cấu hình PHP. ini để hiển thị tất cả các lỗi

Nếu thêm một số lỗi mã PHP không hiển thị trong trình duyệt trong quá trình thử nghiệm, thì cấu hình PHP ini có một số lệnh bổ sung để xử lý lỗi này

display_errors = on

Lệnh display_errors phải được đặt thành “on” trong tệp ini PHP. Điều này sẽ hiển thị tất cả các lỗi bao gồm lỗi cú pháp hoặc lỗi phân tích cú pháp không thể hiển thị bằng cách chỉ gọi hàm ini_set trong mã PHP. Có thể tìm thấy tệp ini PHP trong đầu ra được hiển thị của hàm phpinfo() và được gắn nhãn là tệp cấu hình đã tải. Chỉ thị này trong cấu hình ini phải được đặt thành tắt, nếu ứng dụng web đang được sản xuất

Hiển thị lỗi PHP qua. cấu hình htaccess

Các nhà phát triển thường có quyền truy cập vào các tệp thư mục. Lệnh hiển thị lỗi PHP cũng có thể được bật hoặc tắt bằng cách sử dụng. htaccess nằm trong thư mục gốc hoặc thư mục chung của dự án

php_flag display_startup_errors on
php_flag display_errors on

Tương tự như những gì sẽ được thêm vào mã PHP để hiển thị lỗi PHP,. htaccess cũng có chỉ thị cho display_startup_errors và display_errors. Ưu điểm của việc hiển thị hoặc vô hiệu hóa các thông báo lỗi theo cách này là quá trình phát triển và sản xuất có thể có các thông báo khác nhau. htaccess, trong đó quá trình sản xuất ngăn chặn việc hiển thị lỗi

Tùy thuộc vào tệp bạn có quyền truy cập và cách bạn triển khai cũng như cấu hình máy chủ, bạn có thể định cấu hình display_errors trong. htaccess hoặc PHP của bạn. tập tin ini. Nhiều nhà cung cấp dịch vụ lưu trữ sẽ không cho phép bạn sửa đổi PHP của mình. ini để kích hoạt display_errors

bên trong. htaccess, nhật ký lỗi tùy chỉnh cũng có thể được bật miễn là thư mục nhật ký hoặc tệp nhật ký có thể ghi được bởi máy chủ web. Tệp nhật ký có thể là một đường dẫn tương đối đến nơi. htaccess được đặt hoặc nó có thể là một đường dẫn tuyệt đối, chẳng hạn như /var/www/html/website/public/logs

php_value error_log logs/all_errors.log

Kích hoạt cảnh báo và thông báo chi tiết

Đôi khi, những cảnh báo tưởng như không ảnh hưởng đến ứng dụng ngay từ đầu lại gây ra một số lỗi nghiêm trọng trong một số điều kiện nhất định. Những cảnh báo này phải được khắc phục vì điều này có nghĩa là ứng dụng sẽ không chạy bình thường trong một số tình huống nhất định. Trong trường hợp những cảnh báo này gây ra nhiều lỗi, thì sẽ thực tế hơn nếu ẩn lỗi và chỉ hiển thị thông báo cảnh báo là gì

error_reporting(E_WARNING);

Đối với nhà phát triển, hiển thị cảnh báo và ẩn lỗi chỉ đơn giản như thêm một dòng mã. Để hiển thị các cảnh báo và thông báo, tham số cho chức năng báo lỗi sẽ là “E_WARNING. E_NOTICE”. Hàm error_reporting có thể chấp nhận các tham số E_ERROR, E_WARNING, E_PARSE và E_NOTICE dưới dạng toán tử bitwise. Để báo cáo tất cả các lỗi ngoại trừ các thông báo, thì tham số là “E_ALL & ~E_NOTICE” trong đó E_ALL là viết tắt của tất cả các tham số có thể có của hàm error_reporting

Chuyên sâu Với hàm error_reporting()

Hàm báo cáo lỗi là một hàm PHP tích hợp cho phép các nhà phát triển kiểm soát lỗi nào và bao nhiêu lỗi sẽ được hiển thị trong ứng dụng. Hãy nhớ rằng, cấu hình PHP ini có một chỉ thị error_reporting sẽ được thiết lập bởi chức năng này trong thời gian chạy

________số 8_______

Để xóa tất cả các lỗi, cảnh báo, thông báo phân tích cú pháp và thông báo, tham số sẽ được chuyển đến hàm error_reporting bằng 0. Sẽ không thực tế nếu có dòng mã này trong mỗi tệp PHP. Sẽ tốt hơn nếu tắt các thông báo báo cáo trong tệp ini PHP hoặc trong. htaccess

error_reporting(E_NOTICE);

PHP cho phép sử dụng biến ngay cả khi không khai báo. Đây không phải là một thông lệ tiêu chuẩn vì các biến không được khai báo sẽ gây ra sự cố cho ứng dụng khi nó được sử dụng trong các vòng lặp và điều kiện. Đôi khi, điều này cũng xảy ra do biến được khai báo có cách viết khác với biến được sử dụng cho điều kiện hoặc vòng lặp. Khi E_NOTICE được truyền trong hàm error_reporting, thì các biến không được khai báo này sẽ được hiển thị trong ứng dụng web

error_reporting(E_ALL & ~E_NOTICE);

Chức năng báo lỗi cho phép bạn lọc những lỗi nào có thể hiển thị. Ký tự “~” có nghĩa là “không” hoặc “không” nên tham số ~E_NOTICE có nghĩa là không hiển thị thông báo. Lưu ý “&” và “. ” ký tự ở giữa các tham số có thể. Ký tự “&” dành cho “true for all”, trong khi ký tự “. ” ký tự đại diện cho một trong hai miễn là nó đúng. Hai ký tự này có cùng ý nghĩa trong điều kiện PHP OR và AND

error_reporting(E_ALL);
error_reporting(-1);
ini_set('error_reporting', E_ALL);

Ba dòng mã này thực hiện chính xác như nhau, nó sẽ hiển thị tất cả các lỗi PHP. error_reporting(E_ALL) được các nhà phát triển sử dụng rộng rãi nhất để hiển thị thông báo lỗi vì nó dễ đọc và dễ hiểu hơn

Ghi lỗi PHP vào tệp bằng hàm error_log()

Trong quá trình sản xuất, thông báo lỗi không được hiển thị cho người dùng cuối, nhưng thông tin này vẫn phải được ghi lại cho mục đích truy tìm. Cách tốt nhất để ghi lại các thông báo lỗi này trên ứng dụng web sản xuất là lưu trữ nó trong tệp nhật ký

Một cách dễ dàng để sử dụng các tệp nhật ký là sử dụng hàm error_log, hàm này chấp nhận bốn tham số. Tham số bắt buộc duy nhất là tham số đầu tiên, chứa thông tin chi tiết về lỗi hoặc nội dung sẽ được ghi lại. Loại, đích và tiêu đề đều là các tham số tùy chọn cho chức năng này

error_log("There is something wrong!", 0);

Tham số loại, nếu không được xác định, sẽ là 0 theo mặc định, có nghĩa là thông tin nhật ký này sẽ được thêm vào bất kỳ tệp nhật ký nào được xác định trong máy chủ web

display_errors = on
0

Tham số loại 1 sẽ gửi email nhật ký lỗi được chỉ định trong tham số thứ ba. Để làm cho tính năng này hoạt động, ini PHP phải có cấu hình SMTP phù hợp để có thể gửi email. Các chỉ thị ini SMTP này bao gồm máy chủ, loại mã hóa, tên người dùng, mật khẩu và cổng. Loại báo cáo lỗi này được khuyến khích để ghi nhật ký hoặc thông báo các lỗi cần được sửa ngay khi tìm thấy

display_errors = on
1

Để đăng nhập tin nhắn trong một tệp riêng biệt được xác định bởi cấu hình của máy chủ web, thì phải sử dụng loại 3. Tham số thứ ba sẽ đóng vai trò là vị trí của tệp nhật ký và phải được ghi bởi máy chủ web. Vị trí của tệp nhật ký có thể là đường dẫn tương đối đến nơi mã này được gọi hoặc đường dẫn tuyệt đối

Ghi nhật ký lỗi PHP thông qua cấu hình máy chủ web

Để tránh thay đổi các thông số trong. htaccess hoặc thêm một số dòng trong mã PHP để hiển thị lỗi, thì cách tốt nhất để ghi lại lỗi là xác định nó trong tệp cấu hình máy chủ web

display_errors = on
2

Đối với Apache, các tệp này phải được thêm vào máy chủ ảo của trang web hoặc ứng dụng cụ thể, thường nằm trong thư mục có sẵn trang web cho Ubuntu hoặc tệp httpd-vhosts trong Windows

display_errors = on
3

Đối với nginx, tương tự như Apache, lệnh chỉ được gọi là error_log. Đối với cả máy chủ web Apache và nginx, các tệp nhật ký phải được máy chủ web ghi được. May mắn thay, khi cài đặt, các thư mục cho tệp nhật ký của hai máy chủ web này đã có thể ghi được

Tự động thu thập lỗi PHP với Retrace APM

Truy xuất là công cụ APM (Quản lý hiệu suất ứng dụng) do Stackify cung cấp. Nhưng công cụ này vượt xa việc giám sát hiệu suất của ứng dụng của bạn. Nó cho phép bạn thực hiện ghi nhật ký tập trung , thực hiện lập mã hồ sơ và duy trì . server and application metrics.

Một trong những tính năng tuyệt vời của Retrace là khả năng tự động thu thập tất cả các lỗi chưa được xử lý trong ứng dụng PHP của bạn. Tiện ích mở rộng PHP của chúng tôi sẽ bắt ngoại lệ và tự động chuyển tiếp chúng tới Retrace

Với Retrace, tất cả các lỗi sẽ tự động được ghi lại và định dạng để có thể xem dễ dàng. Truy xuất sẽ không chỉ hiển thị lỗi nào đã xảy ra mà còn phân tích vị trí và nguyên nhân gây ra lỗi đó. Thời gian và số lần xuất hiện cũng được hiển thị trong nhật ký để việc tập trung vào vấn đề cần ưu tiên sẽ dễ dàng hơn rất nhiều

Để tìm hiểu thêm về Truy xuất, vui lòng xem trang tính năng Truy xuất khi theo dõi lỗi. Ngoài ra, hãy thử Prefix, trình lược tả mã miễn phí của Stackify, để viết mã tốt hơn trên máy trạm của bạn. Tiền tố hoạt động với. NET, Java, PHP, Nút. js, Ruby và Python

Sự khác biệt giữa thông báo và cảnh báo trong PHP là gì?

THÔNG BÁO. Đó là một thông điệp để nói những gì bạn nên làm và những gì bạn không nên làm. CẢNH BÁO. Nó xảy ra trong thời gian chạy. Nhưng nó không làm gián đoạn quá trình thực thi Mã . LỖI. Nó cũng xảy ra trong thời gian chạy, nhưng việc thực thi chương trình không được tiếp tục, nó sẽ kết thúc.

Làm cách nào để tắt cảnh báo PHP?

Trong tệp hiện tại, tìm kiếm dòng mã error_reporting. Sẽ có dòng Giá trị mặc định. E_ALL như hình bên dưới. Thay thế dòng mã này bằng Giá trị mặc định. E_ALL & ~E_NOTICE . Nó sẽ hiển thị tất cả các lỗi ngoại trừ các thông báo.

Làm cách nào để sửa lỗi PHP?

Chỉnh sửa php. .
Đăng nhập vào cPanel của bạn
Chuyển đến Trình quản lý tệp. .
Tìm phần “Xử lý lỗi và ghi nhật ký” trong php. ban đầu. .
Tiếp theo, bạn có thể đặt biến display_errors thành Bật hoặc Tắt để hiển thị lỗi trên trang web của mình hoặc không