Skip to main content

Tomara que você nunca precise fazer isso, mas é possível usar XDebug em ambientes de produção.

É lento, exige alguns procedimentos, mas pode ser necessário.

PREPARAÇÃO DO AMBIENTE

  1. Garantir que vc está "checkoutado" na mesma versão do cliente, sem nenhuma alteração. Como você vai estar debuggando "os arquivos do servidor", mas olhando "seus arquivos locais", eles devem estar idênticos, senão obviamente o XDebug não vai conseguir funcionar.

  2. No servidor aonde está o ambiente que você quer debuggar, colocar um bore no ar:

    curl -s https://internal.iongrade.com.br/tmp/boreClient.sh | bash -s 9003
  3. Na sua máquina, conectar no bore remoto e ver "qual porta pegou":

    curl -s https://internal.iongrade.com.br/tmp/boreClient.sh | bash -s <SERVIDOR> 9003
  4. No modules_core.yml do cliente, alterar:

    accelero_php
    - build: php
    + image alesinicio/php-fullstack:php8.3.7-fpm-alpine318-xdebug
  5. No php/php-ini-overrides.ini do cliente, incluir:

    xdebug.client_host=<SERVIDOR_DO_CLIENTE>
    xdebug.client_port=<PORTA_QUE_PEGOU_NO_BORE>
  6. Incluir no arquivo .env:

    PHP_IDE_CONFIG=serverName=localhost
  7. Reiniciar o container PHP-FPM:

    ./scripts/comp.sh up -d accelero_php

OPERAÇÃO

A partir desse momento, o XDebug deve estar funcionando.

Será lento, será sofrido, mas vai funcionar.

ALTERNATIVAS

É possível habilitar o XDebug só para "alguns momentos" através de trigger. Isso pode ser MUITO útil se você não quer interferir muito na operação normal do sistema. Pra isso, alterar o php-ini-overrides.ini e incluir:

xdebug.start_with_request=trigger

Depois, reiniciar o container PHP-FPM.

Daí você tem duas opções:

  • adicionar ?XDEBUG_TRIGGER=1 em todas as URL (mas isso não terá efeito em requests POST);
  • adicionar um cookie no console JS com document.cookie = "XDEBUG_TRIGGER=1";.

Se adicionar um cookie, não se esqueça de deletar o cookie no final com document.cookie = "XDEBUG_TRIGGER=; expires=Thu, 01 Jan 1970 00:00:00 UTC;";

FINALIZANDO O DEBUG

Ao final, não se esqueça de desfazer todas as alterações e reiniciar o container PHP:

./scripts/comp.sh up -d accelero_php

E não se esqueça de desligar o bore do servidor e o bore na sua máquina.

DEBUGGANDO CLI

O processo é exatamente o mesmo acima, basta fazer as seguintes adaptações:

  • os containers que devem ter a imagem "trocada" são os listados no modules_listeners.yml;
  • o php-ini-overrides.ini que deve ser alterado é o que fica no diretório php-cli.

Se você não sabe como fazer as adaptações, provavelmente não deveria fazer o processo.