venerdì 3 agosto 2012

PHP 5.4, XDebug e NetBeans 7.2: Abilitare il debug con il built-in Web Server di php 5.4

Ho fatto vedere nel post "NetBeans 7.2 ed il built-in Web Server di PHP 5.4" (si consiglia di leggerlo prima di proseguire) come sia facile sfruttare il built-in Web Server di PHP 5.4 per sviluppare le proprie applicazioni web con l'IDE NetBeans 7.2 senza dover installare un completo e pesante web server. Ora che abbiamo l'ambiente configurato di certo sarà necessario poter fare un po' di debug sulle nostra applicazioni PHP con XDebug.

Supponendo sia già stato fatto quanto specificato nel post linkato prima, possiamo procedere ad installare e configurare XDebug.
  1. Andare sulla pagina di download e scaricare la versione di XDebug corrispondente alla versione di PHP già scaricata. Ad esempio, avendo io scaricato l'archivio ZIP "php-5.4.5-nts-Win32-VC9-x86.zip" cliccherò sul link "PHP 5.4 VC9 (32 bit)" che mi permetterà di scaricare il file "php_xdebug-2.2.1-5.4-vc9-nts.dll"
  2. Sposto l'archivio appena scaricato nella cartella ext che si trova dentro la cartella in cui ho scompattato PHP. nel mio caso è C:\PHP 5.4.5\ext\
  3. Apro il php.ini (dal tutorial linkato in alto è il file php.ini-development rinominato) e in fondo al file inserisco le seguenti righe avendo cura di specificare il nome della dll scaricata:
    zend_extension = ext\php_xdebug-2.2.1-5.4-vc9-nts.dll
    xdebug.remote_enable = on
    xdebug.remote_host = localhost
    xdebug.remote_port = 9000
    xdebug.remote_handler = dbgp
Le info di XDebug da phpinfo()
Se stavamo già utilizzando NetBeans e il built-in web server era già entrato in funzione, fermiamolo arrestando il processo php.exe da Gestione Attività di Windows.
Avviamo da NetBeans un progetto che ci mostri le phpinfo. Se abbiamo scritto tutto bene vedremo una sezione dedicata ad XDebug. Potremo quindi avviare il debug delle applicazioni da NetBeans. Per maggiori dettagli sull'uso degli strumenti di debug in NetBeans leggere il tutorial Debug di codice sorgente PHP con NetBeans.