[ripropongo la domanda qui, visto che la Piazza centrale non era il luogo più adatto]
Avete mai notato che l'error_tracking di PHP è disabilitato?
Io sì, visto che ho appena scritto a Gianluca per chiederne spiegazione. Mi ha risposto che la sua disabilitazione è legata principalmente a ragioni di performances.
E' molto importante averlo abilitato, perchè solo così viene valorizzata la variabile $php_errormsg, che fornisce una descrizione dell'ultimo errore occorso nell'esecuzione PHP. Di sicuro lo è per chi, come me, voglia tener traccia degli errori manifestati sul proprio sito (ad es. per scriverli su un file di log). Le funzioni PHP infatti (per es. la funzione mail) restituiscono solamente valori booleani sull'esito dell'esecuzione, che non danno alcuna informazione sulla causa dell'eventuale insuccesso.
Gianluca, tuttavia, si è reso disponibile ad attivare l'error_tracking qualora vi fosse un numero di significativo di membri che ne necessitasse. Per questo vi scrivo, per sapere la vostra... mi raccomando, ditemi se ne avete bisogno.
Molte funzioni restituiscono un valore booleano sull'esito della loro esecuzione, nulla di più. Per questo, di fronte all'insuccesso di un comando, non puoi far altro che prenderne atto, senza tuttavia sapere per quale ragione.
L'attivazione dell'error_tracking ti dà la possibilità di avere un'informazione precisa sull'errore; diversamente puoi fare solo supposizioni..
Io ho realizzato un piccolo script che, in caso di errore scrive su file di testo un messaggio tipo il seguente:
[code:1:02291d5023]--- Errore ---
Data e Ora: 2003-08-22 17:11:44 (CEST)
Tipo: Notice
Messaggio: Undefined offset: 1
File: /membri/giannitomas/phpMyBB/readmsg.php
Num. linea: 248
nickname: Guest
IP: 62.11.***.***
[/code:1:02291d5023]
inoltre se il problema è più serio di un semplice "Notice" provvede ad inviarmi una mail che contiene inoltre il dump di tutte le variabili esistenti nel momento in cui si è verificato l'errore.
Non vorrei insistere, anche perchè forse non conosco PHP fino in fondo come te, ma la *ragione* dell'errore non credo tu la possa ricavere da nessuna parte, non almeno nella forma chiara e certa che ti viene data dalla variabile $php_errormsg.
Faccio un esempio banale: se eseguo la funzione mail di PHP offline (senza aver cioè la possibilità di raggiungere un server POP) la variabile $php_errormsg mi dice una roba tipo "Failed to connect to mailserver at "mail.inwind.it" port 25, verify your "SMTP" and "smtp_port" setting in php.ini or use ini_set()"
Ora, senza proseguire questa discussione all'infinito, vorrei solo sapere: questa informazione (come altre di questo genere) si può ricavare senza l'attivazione dell'error_tracking?
(sia chiaro, se mi dici che è possibile sono contento, magari fosse così)
Ho fatto una piccola ricerca e credo che, in merito a quelle informazioni aggiuntive di cui parlavi, l'attivazione dell'error_tracking sia l'unico modo per ottenerle.