Re: php errors [OT]
hAlessandro Pellizzari scrisse in data 11/04/2012 15:47: Non serve che te la prendi. Sto cercando di aiutarti, ma con le informazioni che dai e` difficile. Hai ragione... il fatto è che davo per scontato il comportamento che ricevo mentre invece voi non lo date affatto e invece di essere contento questo mi innervosisce ma questo è un problema mio... almeno finché non vi fate contagiare da me :) Vuoi partire dalle basi e fare una domanda intelligente? Come e` installato PHP? Pacchetto o compilato? il pacchetto è quello distribuito con squeeze. Come modulo di Apache, in CGI, in FastCGI o in altro modo? come modulo di apache2 Usi worker particolari con apache (tipo multithread o itk)? no Che estensioni hai installato? Compilate, pacchetti i PECL? Che librerie stai usando? mysql, postgres prese dai pacchetti di squeeze; poi ho installato l'oci8 con pecl e infine ho installato odbtp compilato da me come modulo. In più parecchie classi pear. Sei sicuro che non silenzino gli errori per lanciare eccezioni? si Hai fatto TDD? non sapendo cosa sia TDD direi di no! :) Hai provato una config standard di php.ini? è il php.ini standard. Che livello di debug hai in php.ini? livello di debug? Cosa intendi? Non abbiamo già parlato di error_reporting ecc...? E in apache.conf? LogLevel warn Potrei continuare. io direi che ne abbiamo abbastanza. Quello che non riesco proprio a capire è perché php si comporti diversamente se chiamato da ajax. O ancor più in dettaglio quello che vorrei capire è: 1. perché gli errori che dovrebbero produrre soltanto un log (quelli loggati come notice per intenderci) se sono in funzioni php richiamate da ajax interrompono l'esecuzione del codice. 2. perché se una funzione php è chiamata da ajax non produce mai errori nei log di apache (e nemmeno nei log di php/cli) e talvolta non producono nemmeno una notifica fra gli errori javascript. Ho provato anche, come mi suggeriva Paolo Nicorelli, di inserire nelle funzioni richiamate da ajax error_reporting(E_ALL); ini_set(display_errors, 0); ini_set(log_errors, 1); ma nei log (né in quelli di apache2 né in quelli di cli) non non compare nulla. ...brancolo nel buio. Piviul -- Per REVOCARE l'iscrizione alla lista, inviare un email a debian-italian-requ...@lists.debian.org con oggetto unsubscribe. Per problemi inviare un email in INGLESE a listmas...@lists.debian.org To UNSUBSCRIBE, email to debian-italian-requ...@lists.debian.org with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org Archive: http://lists.debian.org/4f868cf2.70...@riminilug.it
Re: php errors [OT]
Il 12/04/2012 10:06, Piviul ha scritto: 1. perché gli errori che dovrebbero produrre soltanto un log (quelli loggati come notice per intenderci) se sono in funzioni php richiamate da ajax interrompono l'esecuzione del codice. Ciao Paolo, perdonami se ieri ti ho lasciato a piedi, ma sono un pochino impegnato. Dipende chi genera l'errore ed il livello di errori che setti (dalle variabili/funzioni che già conosci). 2. perché se una funzione php è chiamata da ajax non produce mai errori nei log di apache (e nemmeno nei log di php/cli) e talvolta non producono nemmeno una notifica fra gli errori javascript. Vediamo, per ragionamento logico: 1) PHP interprete (server) 2) PEAR -- classi aggiuntive (estensione di php ...framework) 3) AJAX -- Javascript (client) Se imposti che debbano esserti segnalati e loggati anche i warning, PHP lo fa. Infatti, in base a come dici, se chiami direttamente da php il log viene fatto. Ora l'anomalia che vedi te, potrebbe non essere php. O meglio, PEAR::AJAX magari non chiamano la funzione come tu pensi debba avvenire. E magari per questa ragione, non avvenendo la chiamata, non viene generato log. Ricordiamoci che PEAR è solo un framework non è un mondo a se. Ricordiamoci anche che AJAX E' JAVASCRIPT lato client e basta. Quindi, nell'analizzare il cosa il dove ed il perché è assurdo limitarlo tutto e solamente a PHP. Ho provato anche, come mi suggeriva Paolo Nicorelli, di inserire nelle funzioni richiamate da ajax error_reporting(E_ALL); ini_set(display_errors, 0); ini_set(log_errors, 1); ma nei log (né in quelli di apache2 né in quelli di cli) non non compare nulla. Paolo potresti postare un esempio completo, che possa essere di test, magari impariamo qualcosa tutti :-) [io sicuro] (comprensivo di chiamate lato client PEAR::AJAX) ...brancolo nel buio. Piviul Facciamo luce insieme allora ;-) A proposito il TDD [1] è un interessantissimo metodo di sviluppo rapido, dacci una sbirciata anche solo per cultura, visto che sta andando di moda. (Ovvio che TDD non è la soluzione, ma in alcuni ambienti/applicazioni è un metodo ottimale e rapido) Dario -- Link -- [1] http://en.wikipedia.org/wiki/Test-driven_development -- Per REVOCARE l'iscrizione alla lista, inviare un email a debian-italian-requ...@lists.debian.org con oggetto unsubscribe. Per problemi inviare un email in INGLESE a listmas...@lists.debian.org To UNSUBSCRIBE, email to debian-italian-requ...@lists.debian.org with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org Archive: http://lists.debian.org/4f86ebe4.8000...@gmail.com
Re: php errors [OT]
Il 11/04/2012 11:51, Paolo Sala ha scritto: in realtà un po' di ragione l'avevo... non ho ben capito come mai ma usando PEAR::HTML_AJAX se setti in php.ini error_reporting=E_ALL ~E_DEPRECATED allora nel caso in cui il codice richiamato generi un warning (notice) il codice si blocca senza loggare nulla e ajax a questo punto non restituisce nulla lato client. Qualcuno sa come risolvere il problema? Ragione in che senso? Ti ripongo la domanda: di che versione di php stiamo parlando ? Versione Debian ? Ajax non restituisce niente, è javascript Chi deve restituire è lo script PHP, che interrogato e andando in probabile errore non mostra nulla lato browser, forse perché il display_error è off. Dai una letta quì: [1] errorfunc., [2] error_reporting, [3] Runtime config. Spero possano esserti utili. Dario Link - http://php.net/manual/en/errorfunc.configuration.php http://www.php.net/manual/en/function.error-reporting.php http://www.php.net/manual/en/errorfunc.configuration.php#ini.display-errors -- Per REVOCARE l'iscrizione alla lista, inviare un email a debian-italian-requ...@lists.debian.org con oggetto unsubscribe. Per problemi inviare un email in INGLESE a listmas...@lists.debian.org To UNSUBSCRIBE, email to debian-italian-requ...@lists.debian.org with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org Archive: http://lists.debian.org/4f855e38.2020...@gmail.com
Re: php errors [OT]
Dario scrisse in data 11/04/2012 12:34: Il 11/04/2012 11:51, Paolo Sala ha scritto: in realtà un po' di ragione l'avevo... non ho ben capito come mai ma usando PEAR::HTML_AJAX se setti in php.ini error_reporting=E_ALL ~E_DEPRECATED allora nel caso in cui il codice richiamato generi un warning (notice) il codice si blocca senza loggare nulla e ajax a questo punto non restituisce nulla lato client. Qualcuno sa come risolvere il problema? Ragione in che senso? nel senso che supponiamo che io scriva un codice php come questo: ?php function test() { $ret = ''; if ($var) { echo $var; } else { echo 'la variabile $var non esiste'; } return $ret; } ? Non so se tu abbia mai usato PEAR::HTML_AJAX. Se non lo hai mai usato ti posso dire che è molto utile perché puoi richiamare alcune funzioni php sul server direttamente da codice javascript presente lato client. Se invece lo hai giù usato allora sai di cosa sto parlando... Bene, se eseguo questa funzione da php con la variabile error_reporting = E_ALL ~E_NOTICE allora funziona tutto bene anche se quella funzione la richiamo da javascript. Se invece richiamo quella funzione con error_reporting = E_ALL ~E_DEPRECATED allora la funzione non restituisce nulla, non ci sono errori javascript segnalati e anche lato server non viene loggato alcunché. Nota che se invece faccio un errore di sintassi o meglio un qualunque errore nel codice php, ajax si lamenta così è possibile scoprire dove è il problema. Nel caso invece dei notice non viene loggato alcunché né lato server né lato client e questo non è molto comodo per scoprire dove il è problema. Questo è il senso della frase avevo un po' ragione e questo almeno su debian squeeze. Ciao Piviul -- Per REVOCARE l'iscrizione alla lista, inviare un email a debian-italian-requ...@lists.debian.org con oggetto unsubscribe. Per problemi inviare un email in INGLESE a listmas...@lists.debian.org To UNSUBSCRIBE, email to debian-italian-requ...@lists.debian.org with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org Archive: http://lists.debian.org/4f857483.6070...@riminilug.it
Re: php errors [OT]
Il Wed, 11 Apr 2012 14:09:39 +0200, Paolo Sala ha scritto: Questo codice ha un po' di bug. Io ti consiglio, in sviluppo, di usare sempre E_ALL | E_STRICT function test() { $ret = ''; Inizializzi $ret vuota. if ($var) { $var non e` definita, ma se disattivi i notice e` semplicemente uguale alla stringa vuota, che per tua fortuna e` uguale a false, quindi salti l'echo successivo: echo $var; } else { echo 'la variabile $var non esiste'; Ed esegui questo pezzo, stampando a video il testo. } return $ret; E qui torni la stringa vuota perche` non hai mai usato $ret. Quindi la funzione si comporta correttamente. Forse hai sbagliato da qualche altra parte. Bye. -- Per REVOCARE l'iscrizione alla lista, inviare un email a debian-italian-requ...@lists.debian.org con oggetto unsubscribe. Per problemi inviare un email in INGLESE a listmas...@lists.debian.org To UNSUBSCRIBE, email to debian-italian-requ...@lists.debian.org with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org Archive: http://lists.debian.org/jm3u2v$jg9$1...@dough.gmane.org
Re: php errors [OT]
Alessandro Pellizzari scrisse in data 11/04/2012 14:40: Quindi la funzione si comporta correttamente. Forse hai sbagliato da qualche altra parte. Quant'è difficile spiegarsi... ho scritto quel codice appositamente per fare qualcosa di deprecato. È solo un esempio, magari mal riuscito per cercare di spiegare il comportamento anomalo in caso di chiamata di una funzione php da ajax. Comunque hai perfettamente ragione, mi sono sbagliato a scrivere quel codice, volevo scrivere questo: ?php function test() { $ret = ''; if ($var) { $ret = $var; } else { $ret = 'la variabile $var non esiste'; } return $ret; } ? Nel caso di chiamata da ajax la funzione non restituisce un bel niente, non perché restituisca la stringa vuota, ma perché non ritorna, come non venisse eseguita senza assolutamente loggare nulla né lato server né lato client: mi sono spiegato meglio ora? Piviul -- Per REVOCARE l'iscrizione alla lista, inviare un email a debian-italian-requ...@lists.debian.org con oggetto unsubscribe. Per problemi inviare un email in INGLESE a listmas...@lists.debian.org To UNSUBSCRIBE, email to debian-italian-requ...@lists.debian.org with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org Archive: http://lists.debian.org/4f858008.9060...@riminilug.it
Re: php errors [OT]
Il Wed, 11 Apr 2012 14:58:48 +0200, Piviul ha scritto: Nel caso di chiamata da ajax la funzione non restituisce un bel niente, non perché restituisca la stringa vuota, ma perché non ritorna, come non venisse eseguita senza assolutamente loggare nulla né lato server né lato client: mi sono spiegato meglio ora? Hai controllato anche l'error_log di apache? Di solito quando capita questo li` ci trovi un child exited with signal 11, segno che il problema e` in una libreria linkata a PHP. Puo` essere che tu abbia installato qualcosa con PECL e poi aggiornato PHP a una versione piu` recente senza ricompilare la libreria. Altrimenti devi provare a debuggare riga per riga o con xdebug. Per PHP non cambia niente se la richiesta arriva normalmente o via AJAX, ma se stai usando jQuery e (per esempio) gli hai detto dataType:'json' e lui non riesce a interpretare il json, ti torna (jQuery, non PHP) undefined. Trovi l'errore nella console di Firebug. Bye. -- Per REVOCARE l'iscrizione alla lista, inviare un email a debian-italian-requ...@lists.debian.org con oggetto unsubscribe. Per problemi inviare un email in INGLESE a listmas...@lists.debian.org To UNSUBSCRIBE, email to debian-italian-requ...@lists.debian.org with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org Archive: http://lists.debian.org/jm3vg6$jg9$2...@dough.gmane.org
Re: php errors [OT]
Alessandro Pellizzari scrisse in data 11/04/2012 15:04: Hai controllato anche l'error_log di apache? Di solito quando capita questo li` ci trovi un child exited with signal 11, segno che il problema e` in una libreria linkata a PHP. Puo` essere che tu abbia installato qualcosa con PECL e poi aggiornato PHP a una versione piu` recente senza ricompilare la libreria. Certo che ho controllato l'error.log di apache! Con Pecl ho installato soltanto l'oci8 e non ho aggiornato php. Altrimenti devi provare a debuggare riga per riga o con xdebug. non conosco xdebug; normalmente per debuggare utilizzo PEAR::Log Per PHP non cambia niente se la richiesta arriva normalmente o via AJAX, ma se stai usando jQuery [...] non utilizzo jquery. Comunque io userei il condizionale se fossi in te dal momento che questo è quello che accade. Il perché però lo ignoro. Grazie mille comunque Piviul -- Per REVOCARE l'iscrizione alla lista, inviare un email a debian-italian-requ...@lists.debian.org con oggetto unsubscribe. Per problemi inviare un email in INGLESE a listmas...@lists.debian.org To UNSUBSCRIBE, email to debian-italian-requ...@lists.debian.org with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org Archive: http://lists.debian.org/4f858518.2070...@riminilug.it
Re: php errors [OT]
Il Wed, 11 Apr 2012 15:20:24 +0200, Piviul ha scritto: Certo che ho controllato l'error.log di apache! ... Comunque io userei il condizionale se fossi in te Non serve che te la prendi. Sto cercando di aiutarti, ma con le informazioni che dai e` difficile. Vuoi partire dalle basi e fare una domanda intelligente? Come e` installato PHP? Pacchetto o compilato? Se compilato, con che flag? Come modulo di Apache, in CGI, in FastCGI o in altro modo? Usi worker particolari con apache (tipo multithread o itk)? Che estensioni hai installato? Compilate, pacchetti i PECL? Che librerie stai usando? Sei sicuro che non silenzino gli errori per lanciare eccezioni? Hai fatto TDD? Hai provato una config standard di php.ini? Che livello di debug hai in php.ini? E in apache.conf? Potrei continuare. Io ti ho detto il caso piu` comune in cui PHP fa pagina bianca senza errori (estensione in segfault. Oppure @ davanti a una chiamata di funzione). Ma se ti vuoi arrangiare, fai pure. Bye. -- Per REVOCARE l'iscrizione alla lista, inviare un email a debian-italian-requ...@lists.debian.org con oggetto unsubscribe. Per problemi inviare un email in INGLESE a listmas...@lists.debian.org To UNSUBSCRIBE, email to debian-italian-requ...@lists.debian.org with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org Archive: http://lists.debian.org/jm4212$jg9$3...@dough.gmane.org
Re: php errors [OT]
On 11 April 2012 15:20, Piviul piv...@riminilug.it wrote: Certo che ho controllato l'error.log di apache! Con Pecl ho installato soltanto l'oci8 e non ho aggiornato php. My 2 cents Nella pagina che richiami con ajax ma che non ti da errore: ?php error_reporting(E_ALL); ini_set(display_errors, 1); /* TUO CODICE */ ? o in firebug (risposta dal server o in /var/log/apache/error.log qualcosa dovrebbe esserci -- Per REVOCARE l'iscrizione alla lista, inviare un email a debian-italian-requ...@lists.debian.org con oggetto unsubscribe. Per problemi inviare un email in INGLESE a listmas...@lists.debian.org To UNSUBSCRIBE, email to debian-italian-requ...@lists.debian.org with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org Archive: http://lists.debian.org/CAJYqLYONJ9reS-7ny28CeBFAWHaa7hUcp=K9SseA_qFm=+a...@mail.gmail.com