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

Post new comment

The content of this field is kept private and will not be shown publicly.
  • Web page addresses and e-mail addresses turn into links automatically.
  • Allowed HTML tags: <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd>
  • Lines and paragraphs break automatically.

More information about formatting options

CAPTCHA
This question is for testing whether you are a human visitor and to prevent automated spam submissions.
6 + 11 =
Solve this simple math problem and enter the result. E.g. for 1+3, enter 4.