2012-03-19 17 views
8

estoy un lío de estos avisos falsos en mi archivo de registro, y me gustaría suprimirlos sin suprimir los mensajes legítimos:reprimir PHP falsa imap_open() Aviso: servidor insegura anunciado AUTH = ESTÁNDAR

Aviso de PHP: Desconocido: PROBLEMA DE SEGURIDAD: servidor inseguro anunciado AUTH = PLAIN (errflg = 1) en Desconocido en la línea 0

(Estoy conectando a un servicio IMAP que solo está escuchando localhost en un servidor sin tercer -party usuarios.)

+0

No es realmente un mensaje de "falsa", sólo uno desea ignorar a sabiendas. Si nadie puede encontrar una configuración ini para suprimir este aviso en particular, probablemente lo único que pueda hacer es anular temporalmente el manejador de errores, hacer coincidir la cadena con este error en particular y soltarlo. – deceze

+1

Bueno, supongo que lo mismo podría decirse si escupiera un mensaje cada vez que dividiera 3 entre 2. Elegiría "ignorarlo" a sabiendas también. AFAICT, el mensaje omite el controlador de errores. (Debido a que su fuente es "Desconocido"?) – danorton

Respuesta

1

Puede obtener todas las advertencias y errores al suprimir los avisos u cantar esta:

error_reporting(E_ALL & ~E_NOTICE & ~E_USER_NOTICE); 

Las banderas de informe de errores a nivel de bits son:

 
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 
############################################################################### 

También puede establecer ignore_repeated_errors TRUE/1, de modo que no se inunde su registro también.

ini_set('ignore_repeated_errors',1); 
+1

Downvoted. Vuelva a leer la pregunta, especialmente en "sin suprimir mensajes legítimos". – danorton

+0

Oh, ¿verdad, porque hay una forma programática de decidir qué es personalmente relevante para ti y desechar todo lo demás? Ese será el día. FYI: ** Legítimo ** es una palabra subjetiva. –

+0

Acepto que su respuesta pueda responder a preguntas distintas de esta. En este caso, no importa lo que considero mensajes de aviso legítimos, ya que su solución los enmascara a todos. – danorton

15

Una cosa que puedes hacer es usar los imap_errors y imap_alerts funciones, coloque este código antes de su imap_close.

imap_errors(); 
imap_alerts(); 

Lo que estas funciones hacen es devolver todos los errores y las alertas que han ocurrido y luego las descargas. Si no llama a estas funciones, se emiten como avisos cuando se llama a imap_close(), o la página muere.

+0

entiendo este derecho, que estas funciones son necesarias cuando se utiliza IMAP? – TheCrazyProfessor

2

Como dijo deceze, no es realmente un mensaje "falso", simplemente significa que se trata de una conexión sin cifrar de texto sin formato. Aquí es cómo usted puede hacer:

$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'); 
} 
Cuestiones relacionadas