Re: php errors [OT]

2012-04-12 Per discussione Piviul
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]

2012-04-12 Per discussione Dario

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]

2012-04-11 Per discussione Dario

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]

2012-04-11 Per discussione Paolo Sala
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]

2012-04-11 Per discussione Alessandro Pellizzari
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]

2012-04-11 Per discussione Piviul
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]

2012-04-11 Per discussione Alessandro Pellizzari
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]

2012-04-11 Per discussione Piviul
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]

2012-04-11 Per discussione Alessandro Pellizzari
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]

2012-04-11 Per discussione Paolo Nicorelli
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