2010-01-01 64 views

Trả lời

236

Bạn thực sự cần khắc phục bất kỳ điều gì gây ra cảnh báo, nhưng bạn có thể kiểm soát khả năng hiển thị lỗi với error_reporting. Để bỏ qua các thông điệp cảnh báo, bạn có thể sử dụng một cái gì đó như:

error_reporting(E_ERROR | E_PARSE); 
+32

'E_ALL^​​E_WARNING', cho phép tất cả các báo cáo lỗi bên cạnh cảnh báo, có vẻ như một sự lựa chọn tốt hơn đối số để' error_reporting'. –

+0

nói chung tôi đồng ý, trong trường hợp của tôi tạo ra thông điệp cảnh báo là hành vi dự định vì nó là một phần của các bài kiểm tra đơn vị của tôi. – pgee70

5

Bạn có thể chặn cảnh báo bằng cách sử dụng error_reporting nhưng cách tốt hơn là sửa chữa tập lệnh của bạn ngay từ đầu.

Nếu bạn không biết cách thực hiện, hãy chỉnh sửa câu hỏi của bạn và hiển thị cho chúng tôi dòng được đề cập và cảnh báo được hiển thị.

+1

giải quyết không cần kịch bản tôi đã sử dụng error_reporting (0); – Alireza

+7

Safaali, bạn nên sửa chữa các vấn đề, không bỏ qua sau đó. – Sampson

+2

Safaali, thấy như bạn có một sự quan tâm nhất định trong PHP, làm cho bạn một ưu và nhìn vào sửa chữa kịch bản đó. –

79

Bạn có thể đặt một @ trước cuộc gọi chức năng của bạn để ngăn chặn tất cả các thông báo lỗi.

@yourFunctionHere(); 
+3

Điều này chỉ giấu lỗi, nó vẫn đang xảy ra. Lỗi làm cho PHP chậm lại vì vậy tốt nhất là sửa lỗi nếu có thể. Sử dụng @ thậm chí làm chậm mã khi không có lỗi. http://vega.rd.no/articles/php-performance-error-suppression – dprevite

+29

Đôi khi (không may) bạn thực sự không có lựa chọn nào. Ví dụ, hàm parse_url() của PHP tạo ra các cảnh báo cho các URL "không đúng định dạng" - được cho là lỗi do hàm trả về false trong trường hợp này. Vì vậy, bạn phải chấp nhận các cảnh báo PHP này trong đầu ra chương trình của bạn (có thể không được chấp nhận cho các ứng dụng trình phân tích cú pháp/validator), ngăn chặn các Cảnh báo bằng cách nào đó, hoặc làm việc xung quanh hành vi PHP bị hỏng bằng cách viết trình phân tích cú pháp/trình duyệt tính hợp lệ của riêng bạn cho các URL. Trong trường hợp này, tôi chọn @. – Peter

+1

QUAN TRỌNG: Sử dụng phương pháp này iff (1) bạn không thể khắc phục sự cố tạo cảnh báo cũng như (2) ẩn cảnh báo của bạn khỏi người dùng cuối thông qua php error_reporting ... Ẩn cảnh báo từ nhà phát triển của bạn KHÔNG phải là giải pháp. –

28

Để ngăn chặn cảnh báo khi rời khỏi tất cả các báo cáo lỗi khác được kích hoạt:

error_reporting(E_ALL^E_WARNING); 
9

Không chính xác trả lời câu hỏi, nhưng tôi nghĩ rằng đây là một sự thỏa hiệp tốt hơn trong một số trường hợp:

Tôi đã có một thông báo cảnh báo là kết quả của lệnh printf() trong thư viện của bên thứ ba. Tôi biết chính xác nguyên nhân là gì - một công việc tạm thời xung quanh trong khi bên thứ ba sửa mã của họ. Tôi đồng ý rằng cảnh báo không nên bị đàn áp, nhưng tôi không thể chứng minh công việc của mình cho khách hàng với thông điệp cảnh báo xuất hiện trên màn hình. Giải pháp của tôi:

printf('<div style="display:none">'); 
    ...Third-party stuff here... 
printf('</div>'); 

Cảnh báo vẫn nằm trong nguồn trang như lời nhắc nhở, nhưng ẩn với khách hàng.

+4

Cá nhân, tôi sẽ sử dụng ['ob_start()'] (http://php.net/manual/en/function.ob-start.php) và ['ob_end_clean()'] (http: // php. net/manual/en/function.ob-end-clean.php). Bằng cách này, các công cụ thậm chí không được gửi đến trình duyệt (mà nó hiện ở đây). – h2ooooooo

+6

Đó là lý do tại sao tôi bao gồm "một số tình huống", "cảnh báo không nên bị chặn" và "nhắc nhở tôi". – DaveWalley

+1

Trước khi bỏ phiếu cho tôi nhiều hơn, hãy đọc trả lời của tôi. Lưu ý "bên thứ ba", "thỏa hiệp" và nhận xét ở trên. Tôi đã thêm câu trả lời này trong trường hợp người khác đang ở trong tình trạng tương tự như tôi đang ở, và trong tình huống cụ thể đó, điều này đã cứu tôi trong khi tất cả các câu trả lời khác sẽ không tốt. Lần tới tôi sẽ suy nghĩ hai lần về việc có ích. – DaveWalley

15

Nếu bạn không muốn hiển thị cảnh báo cũng như các lỗi sử dụng

// Turn off all error reporting 
error_reporting(0); 

Error Reporting - PHP Manual

4

Tôi nghĩ rằng giải pháp tốt hơn là cấu hình của .htaccess Bằng cách đó bạn không cần phải thay đổi mã của ứng dụng. Dưới đây là các chỉ thị cho Apache2

php_flag display_startup_errors off 
php_flag display_errors off 
php_flag html_errors off 
php_value docref_root 0 
php_value docref_ext 0 
4

trong Php chính để ẩn bộ thông báo cảnh báo error_reporting (0) ở đầu tệp chung hoặc tệp riêng lẻ.

Trong Wordpress hide Warnings and Notices add sau mã trong tập tin wp-config.php

ini_set('log_errors','On'); 
ini_set('display_errors','Off'); 
ini_set('error_reporting', E_ALL); 
define('WP_DEBUG', false); 
define('WP_DEBUG_LOG', true); 
define('WP_DEBUG_DISPLAY', false); 
1

Nếu bạn muốn ngăn chặn những lời cảnh báo và một số loại lỗi khác (ví dụ, thông báo) khi hiển thị tất cả các lỗi khác, bạn có thể do:

error_reporting(E_ALL & ~E_WARNING & ~E_NOTICE); 
0

Tôi làm như vậy trong php của mình.ini:

error_reporting = E_ALL & ~ E_WARNING & ~ E_NOTICE & ~ E_STRICT & ~ E_DEPRECATED

nào đăng nhập chỉ lỗi gây tử vong và không có cảnh báo

+0

Nếu đây không phải là câu trả lời, bạn nên đăng câu trả lời hoặc câu hỏi khác – Robert

+0

Robert.Đây là câu trả lời. – navid

Các vấn đề liên quan