Respecto al tema de los warnings:

Hay cuatro maneras:

1) Hacerlo línea por línea colocando @ delante de las funciones que 
puedan generar un error. Por supuesto que esa práctica es poco 
recomendable, ya que aparte de ser más sacrificada, no captura *todos* 
los warnings (pueden haber muchos en cualquier código) ni los errores ni 
las advertencias (notices).
  Se utilizará esa práctica en casos desesperados para programas muy 
pequeños sino domésticos.

2) Más fácil y mejor: modificar la configuración del php. En el archivo 
php.ini (donde sea que se encuentre, claro que se puede averiguar 
rápidamente dónde está haciendo correr un phpinfo()), cambiar en el 
grupo de parámetros Error handling and logging:
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; Error handling and logging ;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
.
.
.
error_reporting  =  E_ALL & ~E_NOTICE & _WARNING
.
.
.
Reinicias el apache y voila!

3) Hacer lo mismo, pero sin modificar el archivo de configuración del 
php, sino el conjunto de archivos del sitio en particular, colocando las 
instrucciones en un archivo .htaccess  La complejidad en este caso 
reside más en la configuración del apache para que reconozca y use el 
modrewrite (que es el módulo para usar .htaccess)

4) Hacer lo mismo pero dentro del código php, es decir, colocar el tipo 
de notificaciones que deseamos en un archivo de configuración que 
describa el nivel de mensajes e incluso la rutina de manejo de errores 
(p.e. mensajes "personalizados" del sitio).

Para definir el nivel de errores que deseamos capturar:

error_reporting( E_ALL & ~E_NOTICE & _WARNING );

Luego definimos la función que  manejará los errores cuando sean 
encontrados:

$error_handler = set_error_handler( 'MiFuncionDeCapturaDeErrores' );

.
.
.

Finalmente hacemos la función que maneje los errores:

/* Los parámetros los puedes llamar como quieras, pero deberás recibir 
la misma cantidad y tendrán la semántica señalada */
function MiFuncionDeCapturaDeErrores( $numero_de_error,
                          $mensaje_de_error, 
                          $nombre_archivo,
                          $num_linea,
                          $vars ) {
/* Aquí proceso un mensaje (o no = modo silencioso) de acuerdo al número 
de error, etc. */
if ( $numero_de_error == 234 ) { //Aguante a lo macho!
    return; // Nada hace, nada dice. Es el modo marido abnegado
}
if ( $numero_de_error == 235 ) { //Escandalosa y sufrida muerte
    echo '<h1>Por Dios! como pudiste cometer tal falla!!</h1>';
    .
    .
    .
    echo 'Finalmente este es el bendito error que espero no vuelva a 
suceder :-) ' . $mensaje_de_error;
    die();
}
/* Etc. */

/* Puedes perfeccionar el tema (únicamente en tiempo de desarrollo JAMÁS 
en tiempo de producción!) mostrando backtrace para señalar más detalles 
como el archivo donde se produjo el error, las llamadas a diferentes 
procedimientos que se han presentado, etc. El backtrace se hace con: */

    $debug = debug_backtrace();
    foreach( $debug as $key => $values ) {
        if ( isset( $values['file'] )
//             && $key > 0
             && $values['function'] <> 'user_error' ) {
            $line = "\n<span style=\"color: #0a0;\">"
                . $values['file']
                . '</span>';
            if ( $values['function'] <> 'termina' ) {
                $line .= " (executing <em>$values[function]</em>)";
            }
            $output .= $line . ' in line '
                . $values['line'] . '; ';
        }
    }

}

Dos consejos finales: 1) En *tiempo de desarrollo*, debes colocar  
error_reporting  =  E_ALL (todo de todo, hasta las variables que no han 
sido definidas y otras cosillas que en el tiempo te pueden traer muchos 
dolores de cabeza) y en *tiempo de producción*, si es posible, que nada 
muestre; 2) Para el manejo de tu motor de base de datos, te recomiendo 
que utilices un capa de abstracción (que en parte resuelven muchos de 
esos problemas que estás encontrando) con la que hagas las consultas a 
la base de datos. Como ventaja adicional, verás que puedes cambiar de 
motor de base de datos de una manera muy sencilla. La capa de 
abstracción que recomiendo es la PEAR http://pear.php.net/package/MDB2.

Bueno, más bien que esta es una lista de CSS ;-)

Saludos y que estén bien

sn wrote:

>salud;
>ante todo, perdón por el off topic, no se volverá a repetir, pero el caso es
>que ando apurado y en otros sitios no hayo respuesta.
>cómo puedo quitar los warnings que saca php por pantalla? he probado
>con *fbsql_warnings()
>*pero en mi versión de php(4.3.4) no lo reconoce.
>
>reitero mis disculpas.
>un saludo.
>_______________________________________________
>Lista de distribución Ovillo
>Para escribir a la lista, envia un correo a Ovillo@lists.ovillo.org
>Puedes modificar tus datos o desuscribirte en la siguiente dirección: 
>http://lists.ovillo.org/mailman/listinfo/ovillo
>
>  
>


-- 
Alejandro Salamanca
Gerente de Desarrollo/Development Manager
RedCetus S.R.L
Of. La Paz: (+591) 2-2410521/(+591) 2-2118123
Of. Santa Cruz: (+591) 3-397622
www.redcetus.com
Servicios: Aplicaciones e Instalaciones Linux
           Telefonia de Voz sobre IP
           Desarrollo de Aplicaciones en Linea
Partners:  www.astaro.com (Security Gateways)
           www.vmware.com (Servidores Virtuales)
           www.digium.com (Telefonia VoIP)
           www.abptech.com (VoIP Products)

_______________________________________________
Lista de distribución Ovillo
Para escribir a la lista, envia un correo a Ovillo@lists.ovillo.org
Puedes modificar tus datos o desuscribirte en la siguiente dirección: 
http://lists.ovillo.org/mailman/listinfo/ovillo

Reply via email to