cortesi Thu Apr 11 12:39:49 2002 EDT Modified files: /phpdoc/it/functions errorfunc.xml Log: adding translation up to EN 1.27 by pulici
Index: phpdoc/it/functions/errorfunc.xml diff -u /dev/null phpdoc/it/functions/errorfunc.xml:1.7 --- /dev/null Thu Apr 11 12:39:49 2002 +++ phpdoc/it/functions/errorfunc.xml Thu Apr 11 12:39:47 2002 @@ -0,0 +1,579 @@ +<?xml version="1.0" encoding="iso-8859-1"?> +<!-- EN-Revision: 1.27 Maintainer: pulici Status: ready --> + <reference id="ref.errorfunc"> + <title>Funzioni di gestione degli errori e di logging</title> + <titleabbrev>Errori e logging</titleabbrev> + + <partintro> + <para> + Le seguenti sono le funzioni per la gestione degli errori ed il + logging. Esse permettono di definire regole personalizzate per la + gestione degli errori, e anche di modificarne la modalità della + gestione stessa. Ciò permette di cambiare ed integrare i + messaggi di errore adattandoli alle vostre esigenze. + </para> + <para> + Grazie alle funzioni di logging, è possibile inviare messaggi direttamente + ad altre macchine, alla posta elettronica (o ad un gateway pager o di + posta elettronica!), ai log di sistema, ecc., in modo da effettuare il log e + controllare selettivamente le parti più importanti delle vostre applicazioni e +siti web. + </para> + <para> + Le funzioni di restituzione dell'errore consentono la personalizzazione del + livello e del tipo di errore, dal semplice avviso sino a funzioni + personalizzate restituite durante gli errori. + </para> + </partintro> + + <refentry id="function.error-log"> + <refnamediv> + <refname>error_log</refname> + <refpurpose>invia un messaggio di errore</refpurpose> + </refnamediv> + <refsect1> + <title>Descrizione</title> + <methodsynopsis> + <type>int</type><methodname>error_log</methodname> + <methodparam><type>string</type><parameter>messaggio</parameter></methodparam> + <methodparam +choice="opt"><type>int</type><parameter>tipo_messaggio</parameter></methodparam> + <methodparam +choice="opt"><type>string</type><parameter>destinazione</parameter></methodparam> + <methodparam +choice="opt"><type>string</type><parameter>header_extra</parameter></methodparam> + </methodsynopsis> + <para> + Invia un messaggio di errore la log del server web, ad una porta + <acronym>TCP</acronym> o ad un file. Il primo parametro, + <parameter>messaggio</parameter>, è il messaggio di errore che deve + essere registrato. Il secondo parametro, + <parameter>tipo_messaggio</parameter> indica la destinazione del + messaggio: + <table> + <title><function>error_log</function> tipi di log</title> + <tgroup cols="2"> + <tbody> + <row> + <entry>0</entry> + <entry> + <parameter>messaggio</parameter> è inviato al log di sistema + di PHP, utilizzando il sistema di log del Sistema Operativo o un file, + a seconda di come sia impostata la direttiva di configurazione <link + linkend="ini.error-log">error_log</link>. + </entry> + </row> + <row> + <entry>1</entry> + <entry> + <parameter>messaggio</parameter> è inviato via posta elettronica + all'indirizzo indicato nel parametro <parameter>destinazione</parameter> + parameter. + Questo è l'unico tipo di messaggio nel quale viene usato il quarto + parametro, <parameter>headers_extra</parameter>. Questo tipo di + messaggio utilizza la stessa funzione interna di + <function>mail</function>. + </entry> + </row> + <row> + <entry>2</entry> + <entry> + <parameter>messaggio</parameter> viene inviato attraverso la connessione + di debug di PHP. Questa opzione è disponibile solo nel caso che il + <link linkend="install.configure.enable-debugger">debug remoto sia stato + abilitato</link>. In questo caso, il parametro + <parameter>destinazione</parameter> specifica il nome dell'host o + l'indirizzo IP e opzionalmente, numero di porta, del socket che riceverà + l'informazione di debug. + </entry> + </row> + <row> + <entry>3</entry> + <entry> + <parameter>messaggio</parameter> è aggiunto al file + <parameter>destinazione</parameter>. + </entry> + </row> + </tbody> + </tgroup> + </table> + </para> + <warning> + <para> + Il debug remoto via TCP/IP è una caratteristica di PHP 3 + <emphasis>non</emphasis> disponibile in PHP 4. + </para> + </warning> + <para> + <example role="php"> + <title><function>error_log</function> esempi</title> + <programlisting role="php"> +<![CDATA[ +// Invia notifica via log del server se non è possibile +// connettersi al database. +if (!Ora_Logon ($username, $password)) { + error_log ("Database Oracle non disponibile!", 0); +} + +// Notifica via posta elettronica all'amministratore se esauriscono i FOO +if (!($foo = allocate_new_foo()) { + error_log ("Problemi seri, FOO esauriti!", 1, + "[EMAIL PROTECTED]"); +} + +// altri modi per chiamare error_log(): +error_log ("Problema!", 2, "127.0.0.1:7000"); +error_log ("Problema!", 2, "loghost"); +error_log ("Problema!", 3, "/var/tmp/my-errors.log"); +]]> + </programlisting> + </example> + </para> + </refsect1> + </refentry> + + <refentry id="function.error-reporting"> + <refnamediv> + <refname>error_reporting</refname> + <refpurpose>definisce quali errori di PHP vengono restituiti</refpurpose> + </refnamediv> + <refsect1> + <title>Description</title> + <methodsynopsis> + <type>int</type><methodname>error_reporting</methodname> + <methodparam +choice="opt"><type>int</type><parameter>livello</parameter></methodparam> + </methodsynopsis> + <para> + Definisce il livello di restituzione di errore di PHP e ritorna il vecchio + livello. Il livello di restituzione dell'errore può essere una maschera di + bit o una costante named. L'utilizzo delle costanti named è caldamente + consigliato per assicurare la compatibilità con versioni future. + All'aggiungere di livelli di errore, la gamma degli interi viene incrementata, + perciò vecchi livelli di errore basati sull'intero non si comporteranno + sempre come ci si aspetta. + <example role="php"> + <title>Error Integer changes</title> + <programlisting role="php"> +<![CDATA[ +error_reporting (55); // Equivalente a E_ALL ^ E_NOTICE in PHP 3 + +/* ...in PHP 4, '55' indica (E_ERROR | E_WARNING | E_PARSE | +E_CORE_ERROR | E_CORE_WARNING) */ + +error_reporting (2039); // Equivalente a E_ALL ^ E_NOTICE in PHP 4 + +error_reporting (E_ALL ^ E_NOTICE); // Il medesimo in PHP 3 e 4 +]]> + </programlisting> + </example> + Seguite i collegamenti delle costanti per conoscerne il significato: + <table> + <title><function>error_reporting</function> valori dei bit</title> + <tgroup cols="2"> + <thead> + <row> + <entry>valore</entry> + <entry>costante</entry> + </row> + </thead> + <tbody> + <row> + <entry>1</entry> + <entry> + <link linkend="internal.e-error">E_ERROR</link> + </entry> + </row> + <row> + <entry>2</entry> + <entry> + <link linkend="internal.e-warning">E_WARNING</link> + </entry> + </row> + <row> + <entry>4</entry> + <entry> + <link linkend="internal.e-parse">E_PARSE</link> + </entry> + </row> + <row> + <entry>8</entry> + <entry> + <link linkend="internal.e-notice">E_NOTICE</link> + </entry> + </row> + <row> + <entry>16</entry> + <entry> + <link linkend="internal.e-core-error">E_CORE_ERROR</link> + </entry> + </row> + <row> + <entry>32</entry> + <entry> + <link linkend="internal.e-core-warning">E_CORE_WARNING</link> + </entry> + </row> + <row> + <entry>64</entry> + <entry> + <link linkend="internal.e-compile-error">E_COMPILE_ERROR</link> + </entry> + </row> + <row> + <entry>128</entry> + <entry> + <link linkend="internal.e-compile-warning">E_COMPILE_WARNING</link> + </entry> + </row> + <row> + <entry>256</entry> + <entry> + <link linkend="internal.e-user-error">E_USER_ERROR</link> + </entry> + </row> + <row> + <entry>512</entry> + <entry> + <link linkend="internal.e-user-warning">E_USER_WARNING</link> + </entry> + </row> + <row> + <entry>1024</entry> + <entry> + <link linkend="internal.e-user-error">E_USER_NOTICE</link> + </entry> + </row> + <row> + <entry>2047</entry> + <entry> + <link linkend="internal.e-all">E_ALL</link> + </entry> + </row> + </tbody> + </tgroup> + </table> + </para> + <para> + <example role="php"> + <title>esempi <function>error_reporting</function></title> + <programlisting role="php"> +<![CDATA[ +// Turn off all error reporting +error_reporting (0); + +// Report simple running errors +error_reporting (E_ERROR | E_WARNING | E_PARSE); + +// Reporting E_NOTICE can be good too (to report uninitialized +// variables or catch variable name misspellings) +error_reporting (E_ERROR | E_WARNING | E_PARSE | E_NOTICE); + +// Report all PHP errors (use bitwise 63 in PHP 3) +error_reporting (E_ALL); +]]> + </programlisting> + </example> + </para> + </refsect1> + </refentry> + + <refentry id="function.restore-error-handler"> + <refnamediv> + <refname>restore_error_handler</refname> + <refpurpose> + Ripristina la precedente funzione di gestione dell'errore + </refpurpose> + </refnamediv> + <refsect1> + <title>Descrizione</title> + <methodsynopsis> + <type>void</type><methodname>restore_error_handler</methodname> + <void/> + </methodsynopsis> + <para> + Utilizzata dopo la modifica della funzione di gestione degli errori con + <function>set_error_handler</function>, per ripristinare la precedente + modalità di gestione (che può essere quella di configurazione o una + definita dall'utente). + </para> + <para> + Vedere anche <function>error_reporting</function>, + <function>set_error_handler</function>, + <function>trigger_error</function>, <function>user_error</function> + </para> + </refsect1> + </refentry> + + <refentry id="function.set-error-handler"> + <refnamediv> + <refname>set_error_handler</refname> + <refpurpose> + Configura una funzione di gestione dell'errore definita dall'utente. + </refpurpose> + </refnamediv> + <refsect1> + <title>Descrizione</title> + <methodsynopsis> + <type>string</type><methodname>set_error_handler</methodname> + +<methodparam><type>string</type><parameter>error_handler</parameter></methodparam> + </methodsynopsis> + <para> + Configura una funzione utente (<parameter>error_handler</parameter> per + gestire gli errori in uno script. Restituisce, se esistente, il precedente + gestore degli errori, o &false; in caso di errore. Questa funzione può + essere utilizzata per definire un sistema personalizzato di gestione degli + errori durante l'esecuzione, per esempio in applicazioni dove sia + necessario svuotare dati o file in caso di un determinato errore + critico, o quando sia necessario, in determinate condizioni, attivare + un errore (con <function>trigger_error</function>) + </para> + <para> + La funzione utente richiede 2 parametri: il codice errore e una stringa + descrittiva dell'errore. Da PHP 4.0.2, è possibile opzionalmente fornire + altri 3 parametri aggiuntivi: il nome del file, il numero di riga e il + contesto dove è avvenuto l'errore (un array che punto alla tabella + dei simboli attiva nel punto in cui è avvenuto l'errore). + </para> + <para> + L'esempio sottostante mostra la gestione + delle eccezioni interne attivando gli errori e gestendoli tramite + una funzione definita dall'utente: + <example> + <title> + Gestione errori con <function>set_error_handler</function> e + <function>trigger_error</function> + </title> + <programlisting role="php"> +<![CDATA[ +<?php + +// ridefinisce la costante dell'errore utente - solo PHP 4 +define (FATAL,E_USER_ERROR); +define (ERROR,E_USER_WARNING); +define (WARNING,E_USER_NOTICE); + +// configura il livello di restituzione errore per questo script +error_reporting (FATAL | ERROR | WARNING); + +// funzione di gestione dell'errore +function myErrorHandler ($errno, $errstr, $errfile, $errline) { + switch ($errno) { + case FATAL: + echo "<b>FATAL</b> [$errno] $errstr<br>\n"; + echo " Fatal error in line ".$errline." of file ".$errfile; + echo ", PHP ".PHP_VERSION." (".PHP_OS.")<br>\n"; + echo "Aborting...<br>\n"; + exit 1; + break; + case ERROR: + echo "<b>ERROR</b> [$errno] $errstr<br>\n"; + break; + case WARNING: + echo "<b>WARNING</b> [$errno] $errstr<br>\n"; + break; + default: + echo "Unkown error type: [$errno] $errstr<br>\n"; + break; + } +} + +// funzione di prova del gestore di errore +function scale_by_log ($vect, $scale) { + if ( !is_numeric($scale) || $scale <= 0 ) + trigger_error("log(x) for x <= 0 is undefined, you used: scale = $scale", + FATAL); + if (!is_array($vect)) { + trigger_error("Incorrect input vector, array of values expected", ERROR); + return null; + } + for ($i=0; $i<count($vect); $i++) { + if (!is_numeric($vect[$i])) + trigger_error("Value at position $i is not a number, using 0 (zero)", + WARNING); + $temp[$i] = log($scale) * $vect[$i]; + } + return $temp; +} + +// configura il gestore dell'errore definito dall'utente +$old_error_handler = set_error_handler("myErrorHandler"); + +// attiva alcuni errori, definendo prima un array misto con elementi non numerici +echo "vector a\n"; +$a = array(2,3,"foo",5.5,43.3,21.11); +print_r($a); + +// genera il secondo array, generando un avviso +echo "----\nvector b - a warning (b = log(PI) * a)\n"; +$b = scale_by_log($a, M_PI); +print_r($b); + +// questo è il problema, passiamo una stringa al posto di un array +echo "----\nvector c - an error\n"; +$c = scale_by_log("not array",2.3); +var_dump($c); + +// errore critico, il log di zero o di un numero negativo non è definito +echo "----\nvector d - fatal error\n"; +$d = scale_by_log($a, -2.5); + +?> +]]> + </programlisting> + </example> + E l'esecuzione di questo script, darà + <informalexample> + <programlisting> +<![CDATA[ +vector a +Array +( + [0] => 2 + [1] => 3 + [2] => foo + [3] => 5.5 + [4] => 43.3 + [5] => 21.11 +) +---- +vector b - a warning (b = log(PI) * a) +<b>WARNING</b> [1024] Value at position 2 is not a number, using 0 (zero)<br> +Array +( + [0] => 2.2894597716988 + [1] => 3.4341896575482 + [2] => 0 + [3] => 6.2960143721717 + [4] => 49.566804057279 + [5] => 24.165247890281 +) +---- +vector c - an error +<b>ERROR</b> [512] Incorrect input vector, array of values expected<br> +NULL +---- +vector d - fatal error +<b>FATAL</b> [256] log(x) for x <= 0 is undefined, you used: scale = -2.5<br> + Fatal error in line 36 of file trigger_error.php, PHP 4.0.2 (Linux)<br> +Aborting...<br> +]]> + </programlisting> + </informalexample> + </para> + <para> + E' importante ricordare che il gestore degli errori standard di PHP viene + completamente saltato. La configurazione di <function>error_reporting</function> +non avrà effetto + e il vostro gestore di errore sarà richiamato senza considerarla - in ogni + caso sarà possibile leggere il valore corrente di +<function>error_reporting</function> + ed agire di conseguenza. E' di particolare rilevanza il fatto che questo + valore sarà 0 se la riga che causa l'errore viene precedura dall' + <link linkend="language.operators.errorcontrol">operatore di controllo errore +@</link>. + </para> + <para> + Notare anche che è vostra responsabilità definire <function>die</function> + se necessario. Se la funzione di gestione dell'errore ritorna, lo script + continerà l'esecuzione con la riga seguente a quella che ha causato + l'errore. + </para> + <para> + Vedere anche <function>error_reporting</function>, + <function>restore_error_handler</function>, + <function>trigger_error</function>, <function>user_error</function> + </para> + </refsect1> + </refentry> + + <refentry id="function.trigger-error"> + <refnamediv> + <refname>trigger_error</refname> + <refpurpose> + Genera un messaggio a livello utente di errore/avviso/avvertimento message + </refpurpose> + </refnamediv> + <refsect1> + <title>Descrizione</title> + <methodsynopsis> + <type>void</type><methodname>trigger_error</methodname> + <methodparam><type>string</type><parameter>error_msg</parameter></methodparam> + <methodparam +choice="opt"><type>int</type><parameter>error_type</parameter></methodparam> + </methodsynopsis> + <para> + Utilizzata per attivare una condizione di errore utente, può + essere usata in congiunzione con il gestore di errore interno, o con + una funzione definita dall'utente che sia configurata per essere il + nuovo gestore di errore con (<function>set_error_handler</function>). + Funziona soltanto con la famiglia di costanti E_USER, e punta alla + predefinita <constant>E_USER_NOTICE</constant>. + </para> + <para> + Questa funzione è utile quando sia necessario generare una particolare + risposta ad un'eccezione durante l'esecuzione. + Per esempio: + <informalexample> + <programlisting> +<![CDATA[ +if (assert ($divisor == 0)) + trigger_error ("Cannot divide by zero", E_USER_ERROR); +]]> + </programlisting> + </informalexample> + <note> + <para> + Vedere <function>set_error_handler</function> per un esempio più esplicativo. + </para> + </note> + </para> + <para> + Vedere anche <function>error_reporting</function>, + <function>set_error_handler</function>, + <function>restore_error_handler</function>, + <function>user_error</function> + </para> + </refsect1> + </refentry> + + <refentry id="function.user-error"> + <refnamediv> + <refname>user_error</refname> + <refpurpose> + Genera un messaggio di errore/avviso/avvertimento a livello utente + </refpurpose> + </refnamediv> + <refsect1> + <title>Descrizione</title> + <methodsynopsis> + <type>void</type><methodname>user_error</methodname> + <methodparam><type>string</type><parameter>error_msg</parameter></methodparam> + <methodparam +choice="opt"><type>int</type><parameter>error_type</parameter></methodparam> + </methodsynopsis> + <para> + Questo è un alias per la funzione <function>trigger_error</function>. + </para> + <para> + Vedere anche <function>error_reporting</function>, + <function>set_error_handler</function>, + <function>restore_error_handler</function> e + <function>trigger_error</function> + </para> + </refsect1> + </refentry> + + </reference> + +<!-- Keep this comment at the end of the file +Local variables: +mode: sgml +sgml-omittag:t +sgml-shorttag:t +sgml-minimize-attributes:nil +sgml-always-quote-attributes:t +sgml-indent-step:1 +sgml-indent-data:t +indent-tabs-mode:nil +sgml-parent-document:nil +sgml-default-dtd-file:"../../manual.ced" +sgml-exposed-tags:nil +sgml-local-catalogs:nil +sgml-local-ecat-files:nil +End: +vim600: syn=xml fen fdm=syntax fdl=2 si +vim: et tw=78 syn=sgml +vi: ts=1 sw=1 +--> +