eclipse: installare e configurare il plugin ZEND DEBUGGER

 

Continua la configurazione di eclipse iniziata nel post roadmap: eclipse - un ambiente per sviluppare un progetto PHP con l'installazione di Zend Debugger, prezioso plugin che aiuta nel debugging del codice php.

2009.03.30

[cos'è una roadmap]

 Questa è la parte carente del libro e quindi la completo con i seguenti riferimenti:


Eclipse supporta almeno 3 diversi debugger DBG (descritto nel libro), ZEND, XDEBUG. Il primo sembra essere caduto in disuso, mentre gli ultimi due sembrano essere equivalenti nelle funzionalità.
E' importante installare e configurare uno solo dei 2 altrimenti si pestano i piedi tra di loro.

 

Installazione

L'installazione consta di due parti, una a livello di sistema (modifica del file php.ini) l'altra a livello di plugin.

Parto dall'installazione del plugin (5.2.12). Procedo con Eclipse update, come prima




 
Il plugin di eclipse è installato.

Ora installo l'estensione per php: in primis devo conoscere zendpath e per scoprirlo faccio:
echo "<?php phpinfo(); ?>" > /var/www/phpinfo.php
wget --output-document=- http://localhost/phpinfo.php |grep "extension_dir"

ottengo:

--16:20:26--  http://localhost/phpinfo.php
           => `-'
Resolving localhost... 127.0.0.1
Connecting to localhost|127.0.0.1|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: unspecified [text/html]
    [<=>                                                                                                                          ] 0             --.--K/s             <tr><td class="e">extension_dir</td><td class="v">/usr/lib/php5/20060613+lfs</td><td class="v">/usr/lib/php5/20060613+lfs</td></tr>
    [ <=>                                                                                                                         ] 54,201        --.--K/s            

16:20:26 (5.03 MB/s) - `-' saved [54201]

/usr/lib/php5/20060613+lfs è la parte che mi interessa.
 

zendpath="/usr/lib/php5/20060613+lfs/"
cd /tmp
wget -c http://downloads.zend.com/pdt/server-debugger/ZendDebugger-5.2.12-linux-glibc23-i386.tar.gz
tar zxf ZendDebugger-5.2.12-linux-glibc23-i386.tar.gz
mv ZendDebugger-5.2.12-linux-glibc23-i386/5_2_x_comp/* $zendpath
sudo chown root:root $zendpath"ZendDebugger.so"
rm -fR /tmp/Zend* 

ora configuro php per utilizzare l'estensione, ma prima devo sapere dov'è il php.ini che php sta usando:
 

wget --output-document=- http://localhost/phpinfo.php |grep "Loaded Configuration File" 

ottengo
 

--16:25:30--  http://localhost/phpinfo.php
           => `-'
Resolving localhost... 127.0.0.1
Connecting to localhost|127.0.0.1|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: unspecified [text/html]

    [ <=>                                                                                                                         ] 54,201        --.--K/s            

16:25:30 (253.72 MB/s) - `-' saved [54201]
<tr><td class="e">Loaded Configuration File </td><td class="v">/etc/php5/apache2/php.ini </td></tr>

Nel file php.ini va modificato il valore implicit_flush = Off in On
 

sudo cp /etc/php5/apache2/php.ini /etc/php5/apache2/php.ini~ 
sudo sed -e "s/implicit_flush\ \=\ Off/implicit_flush\ \=\ On/g" -i /etc/php5/apache2/php.ini

e vanno aggiunte alcune righe (suppongo che non sia mai stato installato un altro debugger in precedenza)
 

echo ' [Zend] zend_extension='$zendpath'ZendDebugger.so
zend_debugger.allow_hosts=127.0.0.1/32
zend_debugger.expose_remotely=always ' |sudo tee -a /etc/php5/apache2/php.ini

manca solo il riavvio di apache e anche il debugger è a posto:

sudo /etc/init.d/apache2 restart 


 

Configurazione

anche per zend, una volta terminata l'installazione la configurazione è minima. Semmai ci si deve districare un pò con la prospettiva; la prospettiva originale PHP Debug, a mio avviso, è molto caotica, ma la si può rimaneggiare come meglio si crede.

Ho fatto uno screencast

Se non vedi il filmato clicca qui oppure se non ti piacciono i video in streaming (come al sottoscritto) usa:

 

wget -c http://blip.tv/file/get/Dam-eclipsePhpDebuggingWithZendDebugger863.avi?source=3

 

 UPDATE 2009.03.30:

Installazione per ganimede

Se cerco di installare il plugin zend pdt debugger in ganimede usando il repository http://downloads.zend.com/pdt, ottengo questo errore:

Cannot complete the request.  See the details.
Cannot find a solution satisfying the following requirements org.eclipse.php.help [2.0.0.v20081229-1135]

Il motivo è semplice: in PDT2 NON serve!!!

<upset>

Mi chiedo per quale motivo nessuno si degni mai di scrivere dettagli insignificanti come questo che mi hanno fatto perdere un buon paio d'ore .... Me lo sarei aspettato scritto a caratteri cubitali alla prima riga della home del plugin!

</upset>

Gli step per l'installazione del modulo zend_debugger per php sono gli stessi visti per la 3.3. Nel caso in cui sia presente sul sistema la vecchia versione di zend_debugger usato per eclipse 3.3 è necessario aggiornarla a 5.2.15 scaricando da qui la versione più adatta al proprio sistema onde evitare questo messaggio in fase debugging 

In pratica si fa cosi

zendpath="/usr/lib/php5/20060613+lfs/"
cd /tmp
wget -c http://downloads.zend.com/pdt/server-debugger/ZendDebugger-5.2.15-linux-glibc23-i386.tar.gz
tar zxf ZendDebugger-5.2.15-linux-glibc23-i386.tar.gz
mv mv ZendDebugger-5.2.15RC1-linux-glibc23-i386/5_2_x_comp/ZendDebugger.so $zendpath
sudo chown root:root $zendpath"ZendDebugger.so"
rm -fR /tmp/Zend* 
sudo /etc/init.d/apache2 restart

Infine configuro l'interprete php dalle Prefences di eclipse

dotmap: 

Commenti

Invia nuovo commento

Il contenuto di questo campo è privato e non verrà mostrato pubblicamente.
  • Indirizzi web o e-mail vengono trasformati in link automaticamente
  • Elementi HTML permessi: <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd>
  • Linee e paragrafi vanno a capo automaticamente.
  • Internal paths in double quotes, written as "internal:node/99", for example, are replaced with the appropriate absolute URL or relative path.

Ulteriori informazioni sulle opzioni di formattazione

CAPTCHA
Questa domanda serve per verificare che tu sia un visitatore umano (non un computer) e per prevenire lo spam
Image CAPTCHA
Scrivi ció che vedi nella immagine.