Como atualizar o Xdebug 2 para Xdebug 3 em PHP 7.4 no Ubuntu 20.04LTS?

A configuração para ambos ficam no arquivo referente a versão do PHP instalado em sua máquina, por default: /etc/php/7.4/mods-available/xdebug.ini


Antes (XDebug 2 - geralmente utilizado com PHP 5.6)

xdebug.remote_autostart = 1
xdebug.remote_enable = 1
xdebug.remote_handler = dbgp
xdebug.remote_log = /tmp/xdebug56.log
xdebug.remote_mode = req
xdebug.remote_port = 9056
xdebug.remote_host = localhost
xdebug.show_error_trace = 1
xdebug.remote_connect_back = 1
xdebug.max_nesting_level = 9999


Agora (XDebug 3 - geralmente utilizado com PHP 7 ou 8)

zend_extension=xdebug.so
xdebug.mode=debug
xdebug.start_with_request=yes
xdebug.remote_handler=dbgp
xdebug.log=/tmp/xdebug74.log
xdebug.client_port=9074
xdebug.client_host=localhost
xdebug.discover_client_host=true
xdebug.max_nesting_level=9999


Fonte: https://xdebug.org/docs/upgrade_guide 

Observação: (1) eu particularmente tenho PHP 7.2, PHP 7.4 e PHP 8.1 instalados na mesma máquina, eu defini alguns parâmetros como a porta 9072 para PHP 7.2, 9074 para PHP 7.4 e, 9081 para PHP 8.1 nos seus respectivos arquivos, assim eu consigo ter maior visibilidade ao monitorar separadamente cada projeto. (2) para saber se está tudo certo, crie em um script index.php adicionando o comando phpinfo(); então procure pela sessão XDebug, confirme a versão, e na dúvida de quais parâmetros configurar (por exemplo) em /etc/php/5.6/fpm/conf.d/20-xdebug.ini observe a lista de parâmetros das colunas Directive, Local Value e Master Value.


Sugestões de configuração do xdebug.ini

XDebug 2 - PHP 5.6 /etc/php/5.6/mods-available/xdebug.ini

zend_extension=xdebug.so
xdebug.remote_autostart = 1
xdebug.remote_enable = 1
xdebug.remote_handler = dbgp
xdebug.remote_log = /tmp/xdebug56.log
xdebug.remote_mode = req
xdebug.remote_port = 9056
xdebug.remote_host = localhost
xdebug.show_error_trace = 1
xdebug.remote_connect_back = 1
xdebug.max_nesting_level = 9999

XDebug 3 - PHP 7.0 /etc/php/7.0/mods-available/xdebug.ini

zend_extension=xdebug.so
xdebug.mode=debug
xdebug.start_with_request=yes
xdebug.remote_handler=dbgp
xdebug.log=/tmp/xdebug72.log
xdebug.client_port=9072
xdebug.client_host=localhost
xdebug.discover_client_host=true
xdebug.max_nesting_level=9999

XDebug 3 - PHP 7.4 /etc/php/7.4/mods-available/xdebug.ini

zend_extension=xdebug.so
xdebug.mode=debug
xdebug.start_with_request=yes
xdebug.remote_handler=dbgp
xdebug.log=/tmp/xdebug74.log
xdebug.client_port=9074
xdebug.client_host=localhost
xdebug.discover_client_host=true
xdebug.max_nesting_level=9999

XDebug 3 - PHP 8.1 /etc/php/8.1/mods-available/xdebug.ini

zend_extension=xdebug.so
xdebug.mode=debug
xdebug.start_with_request=yes
xdebug.remote_handler=dbgp
xdebug.log=/tmp/xdebug81.log
xdebug.client_port=9081
xdebug.client_host=localhost
xdebug.discover_client_host=true
xdebug.max_nesting_level=9999 


Configurando o XDebug no VSCode

  1. clicar em Run & Debug (Ctrl+Shift+D) no sidebar (lado esquerdo) do VSCode
  2. clicar na Engrenagem de tooltip: Open 'launch.json' (./vscode/launch.json)
  3. substituir as portas pelos respectivos números acima
  4. se estiver utilizando hosts virtuais (ex: meu-projeto.local) substituir localhost pelo dns do seu host virtual
  5. salve e dê play (F5)

Exemplo do conteúdo que deverá ser exibido em ./vscode/launch.json, destaquei em negrito as configurações que geralmente realizo em meus ambientes (xdebugSettings.max_data significa que ao exibir o conteúdo de qualquer variável no Debug, o conteúdo não será limitado em número de caracteres):

{
    // Use IntelliSense to learn about possible attributes.
    // Hover to view descriptions of existing attributes.
    // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Listen for Xdebug",
            "type": "php",
            "request": "launch",
            "port": 9074,
            "xdebugSettings": {
                "max_data": -1
            }
        },
        {
            "name": "Launch currently open script",
            "type": "php",
            "request": "launch",
            "program": "${file}",
            "cwd": "${fileDirname}",
            "port": 0,
            "runtimeArgs": [
                "-dxdebug.start_with_request=yes"
            ],
            "env": {
                "XDEBUG_MODE": "debug,develop",
                "XDEBUG_CONFIG": "client_port=${port}"
            }
        },
        {
            "name": "Launch Built-in web server",
            "type": "php",
            "request": "launch",
            "runtimeArgs": [
                "-dxdebug.mode=debug",
                "-dxdebug.start_with_request=yes",
                "-S",
                "localhost:0"
            ],
            "program": "",
            "cwd": "${workspaceRoot}",
            "port": 9074,
            "serverReadyAction": {
                "pattern": "Development Server \\(http://localhost:([0-9]+)\\) started",
                "uriFormat": "http://localhost:%s",
                "action": "openExternally"
            }
        }
    ]
}

Comentários

Postagens mais visitadas deste blog

Configurar teclado americano com acentuação em português + Ç no Ubuntu 18.04LTS e 20.04LTS

Como instalar a impressora Epson L395 via wi-fi no Ubuntu 18.04 LTS e Ubuntu 20.04 LTS