2012-03-19 22 views
8

tôi nhận được một mớ hỗn độn của những cảnh báo giả mạo trong hồ sơ đăng nhập của tôi, và tôi muốn để ngăn chặn chúng mà không cần đè nén thư hợp pháp:Suppress giả PHP imap_open() Lưu ý: máy chủ không an toàn quảng cáo AUTH PLAIN =

PHP Thông báo: Không xác định: VẤN ĐỀ AN TOÀN: máy chủ không an toàn được quảng cáo AUTH = PLAIN (errflg = 1) trong Không xác định trên dòng 0

(Tôi đang kết nối với dịch vụ IMAP chỉ nghe máy chủ cục bộ trên máy chủ không có thứ ba người dùng bên.)

+0

Nó không thực sự là một "giả" tin nhắn, chỉ cần một trong những bạn muốn cố tình lờ đi. Nếu không ai có thể đưa ra một thiết lập ini để ngăn chặn thông báo cụ thể này, có lẽ điều duy nhất bạn có thể làm là tạm thời ghi đè lên trình xử lý lỗi, chuỗi phù hợp với lỗi cụ thể này và thả nó. – deceze

+1

Vâng, tôi cho rằng điều tương tự có thể được nói nếu nó nhổ ra một tin nhắn mỗi khi tôi chia 3 cho 2. Tôi sẽ chọn để "cố ý bỏ qua" rằng một, quá. AFAICT, thông báo bỏ qua trình xử lý lỗi. (Vì nguồn của nó là “Không xác định”?) – danorton

Trả lời

1

Bạn có thể nhận tất cả cảnh báo và lỗi trong khi bỏ qua thông báo u hát này:

error_reporting(E_ALL & ~E_NOTICE & ~E_USER_NOTICE); 

Cờ báo cáo lỗi bit cấp là:

 
Error Bit   Purpose 
############################################################################### 
E_ALL    All errors and warnings (doesn't include E_STRICT) 
############################################################################### 
E_ERROR    Fatal run-time errors 
############################################################################### 
E_WARNING   Run-time warnings (non-fatal errors) 
############################################################################### 
E_PARSE    Compile-time parse errors 
############################################################################### 
E_NOTICE   Run-time notices (these are warnings which often result 
        from a bug in your code, but it's possible that it was 
        intentional (e.g., using an uninitialized variable and 
        relying on the fact it's automatically initialized to 
        an empty string) 
############################################################################### 
E_STRICT   Run-time notices, enable to have PHP suggest changes to 
        your code which will ensure the best interoperability 
        and forward compatibility of your code. 
############################################################################### 
E_CORE_ERROR  Fatal errors that occur during PHP's initial startup 
############################################################################### 
E_CORE_WARNING  Warnings (non-fatal errors) that occur during PHP's 
        initial startup 
############################################################################### 
E_COMPILE_ERROR  Fatal compile-time errors 
############################################################################### 
E_COMPILE_WARNING Compile-time warnings (non-fatal errors) 
############################################################################### 
E_USER_ERROR  User-generated error message 
############################################################################### 
E_USER_WARNING  User-generated warning message 
############################################################################### 
E_USER_NOTICE  User-generated notice message 
############################################################################### 

Bạn cũng có thể thiết lập ignore_repeated_errors TRUE/1 để nó không làm ngập đăng nhập của bạn là tốt.

ini_set('ignore_repeated_errors',1); 
+1

Bị bỏ qua. Vui lòng đọc lại câu hỏi, đặc biệt là “không nén tin nhắn hợp pháp”. – danorton

+0

Ồ đúng, bởi vì có cách lập trình để quyết định những gì liên quan đến cá nhân bạn và ném ra mọi thứ khác? Đó sẽ là ngày. FYI: ** Chính đáng ** là một từ chủ quan. –

+0

Tôi đồng ý rằng câu trả lời của bạn có thể trả lời các câu hỏi khác ngoài câu hỏi này. Trong trường hợp này, nó không quan trọng những gì tôi coi là thông báo thông báo hợp pháp, vì giải pháp của bạn sẽ che giấu tất cả chúng. – danorton

15

Một điều bạn có thể làm là sử dụng các chức năng imap_errorsimap_alerts, đặt mã này trước imap_close của bạn.

imap_errors(); 
imap_alerts(); 

Những chức năng này làm là trả về tất cả các lỗi và cảnh báo đã xảy ra và sau đó xóa chúng. Nếu bạn không gọi những hàm này, chúng sẽ được phát hành như thông báo khi imap_close() được gọi, hoặc trang chết.

+0

Tôi có hiểu điều này đúng không, các chức năng này có bắt buộc khi sử dụng IMAP không? – TheCrazyProfessor

2

Như lừa dối nói, nó không thực sự là một thông điệp "không có thật", nó chỉ có nghĩa là nó là một kết nối không được mã hóa rõ ràng. Đây là cách bạn có thể làm:

$error = imap_errors(); 
if (count($error) > 1 || $error[0] != 'SECURITY PROBLEM: insecure server advertised AUTH=PLAIN') { 
    // More than 1 error or not the expected error 
    var_dump($error); 
    throw new Exception('IMAP error detected'); 
} 
Các vấn đề liên quan