Debugando PHP no Mac OS Yosemite

Demorei bastante para criar um post mais atual sobre debugar, mais específico ainda, no Mac OS Yosemite (creio que para as novas versões deva funcionar também, quando existirem). Essa demora deu-se em de fato eu não estar utilizando ainda na plataforma da maçã, confesso, relaxo de minha parte.

Este post visa explicar de forma simples as configurações do Xdebug para o Sistema Operacional Mac OS Yosemite (10.10.3, no meu caso).

 

Do que precisamos?

  • PHP (óbvio)
  • Xdebug
  • Terminal
  • Netbeans
  • Browser (utilizarei o chrome para exemplificar)
  • Alguns minutos do seu dia para aprender algo novo (caso ainda não saiba)

 

Observações

Eu instalei tudo via brew, o PHP, o xdebug, o mysql… tudo, a vida é outra sem o MAMP, muito melhor, ainda mais pra quem tem um Macbook Air (memória e HD extremamente limitados!). Enfim, pra instalar tudo via brew pense no apt-get do Linux: brew install nome-do-pacote e aguarde a mágica acontecer. Depois de tudo instalado obviamente que um php.ini maroto deve ser criado, caso possua interesse, aqui está o que estou utilizando hoje (lembrando que meu php.ini é extremamente mutável e ao você estar lendo este post pode ter muito mais ou muito menos coisa). Atualmente eu rodo um script na inicialização do Mac pra startar o mysql, o PHP eu carrego sempre o server embutido com o meu php.ini, desta forma não tenho virtual hosts, não tenho uma aplicação gigante fazendo trocentas coisas em background pra mim (MAMP) ou me pedindo pra pagar e o melhor, moldo cada aplicação conforme o server que vai ser executado simplesmente deixando os php.ini’s de meu Mac semelhantes ao server de produção. Tá, não é um vagrant da vida mas ajuda… poucas vezes digo “na minha máquina funciona”, se é que me entende.

 

Começando

Esperando que você já tenha os requisitos atendidos, vamos às configurações. Primeiro, localize onde está o seu xdebug. Se você instalou pelo brew provavelmente estará em: /usr/lib/php/extensions/no-debug-non-zts-20121212/xdebug.so. Caso não seja este o caminho, procura dentro de /usr/lib/php/extensions, deve estar por lá. Feito isto, adicione este caminho no seu php.ini.

[xdebug]
zend_extension=/usr/lib/php/extensions/no-debug-non-zts-20121212/xdebug.so

 

Configurações no php.ini

Agora é o momento de informar as configurações do xdebug para que o Netbeans seja capaz de realizar o debug. Seu php.ini deve ficar mais ou menos assim:

 

[xdebug]
# Habilitando a extensão
zend_extension=/usr/lib/php/extensions/no-debug-non-zts-20121212/xdebug.so

# Habilitando o debug
xdebug.remote_enable=1

# Definindo a porta. Ponto importantíssimo: Em todos os tutoriais informa a porta 9000
# no entanto para o Mac OS (pelo menos para mim) somente funcionou na porta 9001!
xdebug.remote_port=9001

# Mais configurações que o próprio Netbeans recomenda
xdebug.var_display_max_children = 999
xdebug.var_display_max_data = 999
xdebug.var_display_max_depth = 100
xdebug.max_nesting_level = 2048

# Habilitando a IDE para o xdebug, este é o nome configurado no próprio Netbeans
xdebug.idekey=netbeans-xdebug

Feito isso já temos tudo o que precisamos para debugar com PHP. Agora basta configurar o projeto no Netbeans.

 

No Netbeans

Primeiro crie um novo projeto em PHP. Se quiser pode utilizar um projeto existente, apenas recomendo a criação de um novo para que você tenha o ambiente o mais parecido com o meu possível. Após criar seu projeto, crie um arquivo index.php com o seguinte conteúdo de exemplo:

<?php

$nomes = [
    'Andre',
    'Erik',
    'Alex',
    'Lucas',
    'Seu nome aqui'
];

foreach($nomes as $nome) {
    echo $nome . '<br />';
}

 

Após isso, no Netbeans, adicione um breakpoint logo no início do foreach.

breakpoint-foreach

Antes que debuguemos, precisamos configurar o projeto e startar o server embutido no nosso diretório de teste. Para isso, via terminal acesse a pasta de seu projeto e digite o seguinte:

php -S localhost:8080 -c /caminho/do/seu/php.ini

Este php.ini é o arquivo que você adicionou as configurações do xdebug agora há pouco.

O resultado deve ser algo como:

iniciando-server

Apesar de exibir um alerta sobre a versão do minha Zend Engine, o meu Xdebug funciona normalmente.

server-rodandoOk, já estamos “no ar”, agora vamos à configuração! Abra as preferências do Netbeans e clique sobre a logo do PHP e em seguida na aba “Debugging”.

Informe a porta 9001, a Session ID: netbeans-xdebug, clique em Apply e depois em Ok.

netbeans-preferences

Agora é o momento de configurar o projeto. Clique com o direito sobre o nome do projeto e vai em “Properties”. Acesse a seção “Run Configuration” e informe as seguintes configurações:

Run as: Local Web Site (running on localweb server)

Projetct URL: https://www.andrebian.com

Index File: em branco

project-properties

Agora estamos prontos!

 

E finalmente, debugando

Selecione o browser que acessará o projeto, no meu caso o chrome.

selecionando-browser

Em seguida clique sobre o botão de debug.

debug

Isto fará com que o chrome abra. Em sua URL podemos claramente ver parâmetros de debug e uma tela em branco, afinal de contas, ele capturou logo no início do foreach, então nada ainda será impresso, somente ao passar pelo loop.

browser-debug

Mas ao olharmos no Netbeans novamente… maravilha!

netbeans-debugando

Prontinho! Já é possível debugar em PHP no seu Mac. Faça bom proveito desta ferramenta!

Caso você esteja no Linux as configurações são bem semelhantes e, provavelmente ao pegar as configurações padrões do Netbeans (porta 9000) deve funcionar. Caso reste alguma dúvida com relação a instalação do Xdebug, sugiro ler este artigo do Erik Figueiredo.

Menu