Câu trả lời:
Bạn thực sự nên sửa bất cứ điều gì gây ra cảnh báo, nhưng bạn có thể kiểm soát mức độ hiển thị của lỗi error_reporting()
. Để bỏ qua các thông báo cảnh báo, bạn có thể sử dụng một cái gì đó như:
error_reporting(E_ERROR | E_PARSE);
E_ALL ^ E_WARNING
, cho phép tất cả báo cáo lỗi bên cạnh các cảnh báo, có vẻ như là một lựa chọn tốt hơn để tranh luận error_reporting
.
Bạn có thể đặt @ trước lệnh gọi chức năng của mình để chặn tất cả các thông báo lỗi.
@yourFunctionHere();
dns_get_record
sẽ ném cảnh báo. Mã của bạn có thể bù cho cảnh báo nhưng nó vẫn ném chúng. Tắt báo cáo lỗi hoạt động trên máy chủ sản xuất, nhưng không phải trên máy chủ phát. Nếu bạn đang tạo nội dung XML, cảnh báo sẽ khiến trình duyệt không hiển thị do máy chủ đang gửi XML không đúng định dạng do cảnh báo gây ra. Đôi khi bạn muốn điều đó trên phát triển, nhưng không phải vì một cái gì đó gây ra bởi lỗi tra cứu DNS tạm thời mà bạn đã bù đắp.
Nếu bạn không muốn hiển thị cảnh báo cũng như sử dụng lỗi
// Turn off all error reporting
error_reporting(0);
trong Core Php để ẩn thông báo cảnh báo đặt error_Vporting (0) ở đầu tệp chung bao gồm tệp hoặc tệp riêng lẻ.
Trong Wordpress ẩn Cảnh báo và Thông báo thêm mã sau vào tệp 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);
Không trả lời chính xác 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ố tình huống:
Tôi đã có một thông báo cảnh báo là kết quả của câu 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ách giải quyết tạm thời trong khi bên thứ ba sửa mã của họ. Tôi đồng ý rằng các cảnh báo không nên bị loại bỏ, nhưng tôi không thể chứng minh công việc của mình với khách hàng với thông điệp cảnh báo hiện lê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 còn trong nguồn trang như một lời nhắc nhở cho tôi, nhưng vô hình với khách hàng.
ob_start()
và ob_end_clean()
thay vào đó. 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ó làm ở đây).
Tôi nghĩ rằng giải pháp tốt hơn là cấu hình của .htaccess Theo cách đó bạn không phải thay đổi mã ứ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
Bạn có thể chặn cảnh báo bằng cách sử dụng error_Vporting nhưng cách tốt hơn nhiều là sửa tập lệnh của bạn ngay từ đầu.
Nếu bạn không biết cách, 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 đang được hỏi và cảnh báo được hiển thị.
Đã có câu trả lời với Toán tử điều khiển lỗi nhưng nó thiếu giải thích. Bạn có thể sử dụng @
toán tử với mọi biểu thức và nó ẩn các lỗi (ngoại trừ Lỗi nghiêm trọng).
@$test['test']; //PHP Notice: Undefined variable: test
@(14/0); // PHP Warning: Division by zero
//This is not working. You can't hide Fatal Errors this way.
@customFuntion(); // PHP Fatal error: Uncaught Error: Call to undefined function customFuntion()
Để gỡ lỗi nó là phương pháp nhanh và hoàn hảo. Nhưng bạn không bao giờ nên sử dụng nó trong sản xuất cũng như vĩnh viễn bao gồm trong phiên bản địa phương của bạn. Nó sẽ cung cấp cho bạn rất nhiều kích thích không cần thiết.
Bạn nên xem xét thay thế:
1. Cài đặt báo cáo lỗi như được đề cập trong câu trả lời được chấp nhận.
error_reporting(E_ERROR | E_PARSE);
hoặc từ cài đặt PHP INI
ini_set('display_errors','Off');
2. Bắt ngoại lệ
try {
$var->method();
} catch (Error $e) {
// Handle error
echo $e->getMessage();
}