Este artigo demonstra como realizar a instalação e configuração do Xdebug no Linux e Netbeans. O Xdebug é um debugger e profiler para códigos PHP. A intenção deste artigo é ser um passo a passo resumido, portanto consideramos que você já seja um desenvolvedor PHP e usuário Linux experiente. Não é objetivo deste artigo explicar como debugar com o Xdebug. Este artigo não cobre a configuração do Xdebug no Eclipse e Zend Studio, porém as diferenças neste aspecto são mínimas em relação ao Netbeans.
Passo 1: Imprimindo o phpinfo()
Digite no prompt do seu Linux:
$ php -i > phpinfo.txt
Este comando mostra o phpinfo() do seu arquivo “php.ini” versão CLI (Command Line Interface), porém a versão que o Xdebug/Netbeans utiliza é o “php.ini” versão HTTP.
Caso você mantenha arquivos “php.ini” diferentes entre os ambientes CLI e HTTP, crie um arquivo chamado “phpinfo.php”, que printa o método phpinfo(), e o execute no navegador.
Selecione e copie o conteúdo do “phpinfo.txt”, ou no segundo caso, a saída da página web “phpinfo.php”.
Passo 2: Wizard do Xdebug
Acesse http://xdebug.org/wizard.php e copie e cole o resultado (phpinfo.txt) no formulário encontrado nesta página.
Este wizard irá analisar o “php.ini” de seu ambiente e indicar a versão adequada do Xdebug que você deve baixar, assim como fornecer um passo a passo resumido de instalação do “.tgz”.
Passo 3: Seguir o ‘Instructions’ do Wizard
Seguir o procedimento sugerido em Instructions (http://xdebug.org/wizard.php), após copiar e colar o conteúdo do seu arquivo “php.ini”.
Observação: Caso não possua o phpize, instale o php5-dev, instale:
sudo apt-get install php5-dev
Várias ações serão solicitadas, por exemplo:
- Baixar e descompactar o .tgz do xdebug;
- Compilar o xdebug;
- Copiar o arquivo gerado “xdebug.so” para a pasta de modulos do PHP.
Passo 4: Editando o php.ini
Digamos que você copiou o arquivo “xdebug.so” para a pasta “/usr/lib/php5/20090626+lfs/”. Observe que o procedimento realizado no passo anterior vai informar a pasta correta que você deve copiar o arquivo “xdebug.so”.
Encontre a versão http ou web do seu arquivo “php.ini”, por exemplo “/usr/local/php5/etc/php.ini”. Edite-o.
$ cd /usr/local/php5/etc
$ sudo gedit php.ini
Adicione as linhas a seguir:
[xdebug]
zend_extension = /usr/lib/php5/20090626+lfs/xdebug.so
;profilling
;xdebug.profiler_enable = 1
;xdebug.extended_info = 0
;xdebug.remote_enable = 0
;xdebug.profiler_output_dir=/tmp
;debug
xdebug.remote_enable=1
xdebug.remote_handler=dbgp
xdebug.remote_mode=req
xdebug.remote_host=localhost
xdebug.remote_port=9000
xdebug.extended_info=1
Observe que na linha “xdebug.remote_host=” você deve inserir o endereço do seu ambiente localhost, que será utilizado como padrão pelo Xdebug para realização de debugging.
Perceba que as linhas referentes a “profilling” estão comentadas (não se preocupe afinal estão comentadas). Isto deve ser tema de um próximo artigo.
Passo 5: Configurando o Netbeans
No Netbeans acesse > Tools > Options > PHP > aba Debugging.
Desabilitar “Stop at first line”.
Na estrutura de seu projeto, no Netbeans, acesse > Project Properties > Run Configuration > Project URL e adicione a URL do seu projeto, por exemplo: http://localhost/projeto.
Em > Project Properties > Run Configuration > Index File, deixe vazio.
Passo 6: Restart no Apache e Netbeans
Neste exemplo usamos o servidor Apache, mas caso você esteja utilizando o Nginx, reinicie-o. Se estiver utilizando o “php5-fpm” com Nginx, siga o mesmo procedimento.
$ sudo service apache2 restart
$ sudo service nginx restart
$ sudo service php5-fpm restart
Feche o Netbeans caso esteja aberto.
Possíveis problemas
Caso apresente o erro:
Cannot find autoconf. Please check your autoconf installation and the $PHP_AUTOCONF environment variable. Then, rerun this script.
É só executar os seguintes passos:
# cd /usr/src
# wget http://ftp.gnu.org/gnu/m4/m4-1.4.9.tar.gz
# tar -zvxf m4-1.4.9.tar.gz
# cd m4-1.4.9/
# ./configure && make && make install
# cd ../
# wget http://ftp.gnu.org/gnu/autoconf/autoconf-2.62.tar.gz
# tar -zvxf autoconf-2.62.tar.gz
# cd autoconf-2.62/
# ./configure && make && make install
Caso o Netbeans apresente a mensagem “xdebug waiting for connection”, verificar se atualizou o php.ini da versão http da aplicação e não a versão CLI.
Conclusão
Agradeço ao Ary F. e Victor G. pela ajuda, ao compartilharem seus problemas e soluções com a instalação e configuração do Xdebug. Debugar códigos PHP com o Xdebug não é difícil e espero que você aproveite este conhecimento para resolver bugs com maior rapidez e eficiência e também melhorar sua produtividade.