Back-End

30 ago, 2013

Xdebug: debugger para PHP rodando 100%

Publicidade

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.

Referencias