본문 바로가기
php

[php] VS CODE 디버그 사용하기 #xDebug for PHP (xDebug3)

by bryan.oh 2020. 12. 20.
반응형

VISUAL STUDIO CODE 
xDebug for PHP

 

2020-12-20 되는 방법입니다.

 

준비

  • php 버전 7.x

  • apache24 (다른 웹서버 사용가능)

  • visual studio code ( php debug, php IntelliSence )

 

xdebug dll 다운로드

다운받기 전에 본인의 php 버전에 맞는 dll 을 받기 위해서
temp.php 파일을 만들고, 아래 코드만 입력합니다.

<?php
    echo phpinfo();
?>

그리고 localhost:8080/temp.php 로 들어가면 아래와 같은 화면이 나오죠.

여기서 Ctrl + A 로 전체선택 하고, Ctrl + C 로 복사합니다.

그리고 xdebug.org/wizard(새창) 사이트로 이동합니다.

클릭 하면 다음과 같은 페이지가 나옵니다.

1. 저 링크를 눌러서 dll 을 다운로드
2. c:\php7\ext (이건 저의 경우이고요. 사이트에 표시된대로 dll 파일을 옮겨주세요.)
3. 그리고 php.ini 파일을 열어서 맨 아래에 zend_extension = c:\.... 뒤에까지 복붙합니다.

여기서 중요

몇가지 옵션을 추가해야 되더군요. 

구글링 해보면 아래와 같이 옵션을 추가하라고 나와있는데, 제대로 동작을 안하더라고요

알고 보니 아래는 xDebug 2 버전입니다.

xdebug.remote_enable=1
xdebug.remote_autostart=1
xdebug.remote_host=127.0.0.1
xdebug.remote_port=9000
xdebug.default_enable=1

 

(아래서 설명하겠지만) 제가 설치한 php debug 버전은 현재(2020-12) 최신 버전인 v1.13.0 입니다.

xDebug 3 는 옵션명이 바꼈다고 되어있네요. (다른 옵션들은 여기 링크에서 확인가능합니다.)

[xdebug]
zend_extension="c:\php7\ext\php_xdebug-3.0.1-7.4-vc15-x86_64.dll"
; Enable communications using DBGp protocol
xdebug.mode=develop
xdebug.start_with_request=yes
xdebug.mode=debug
xdebug.client_host=127.0.0.1
xdebug.client_port=9000

 

웹서버 재시작

php.ini 파일이 변경되었으므로, 웹서버를 다시 시작합니다.

(저의 경우 apache24 이므로)

윈도우시작 -> 서비스 또는 service 입력 -> apache24 재시작

 

 

Visual Studio Code Extension 설치

PHP Debug(Felix Becker) 와 PHP IntelliSense 를 설치합니다. ( 현재 버전은 1.13.0 과 2.3.14 )

 

launch.json 설정

launch.json 중
"launch currently open script"는 브라우저 실행 없이 바로 file 에서 디버깅하는 것이고
"debug for PHP" 는 웹브라우저를 실행할때 디버깅 하는 것입니다.
("name" 의 값은 임으로 입력해도 됩니다.)

(그리고 "port": 9000 은 웹서버 port 와 관련 없습니다. 8080 입력하지 마시고 그대로 9000 입력하세요.)

{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Launch Chrome",
            "request": "launch",
            "type": "pwa-chrome",
            "url": "http://localhost:8080",
            "webRoot": "${workspaceFolder}"
        },
        {
            "name": "launch currently open script",
            "type": "php",
            "request": "launch",
            "program": "${file}",
            "cwd": "${fileDirname}",
            "port": 9000,
            "runtimeExecutable": "C:\\php7\\php.exe"
        },
        { 
            "name": "debug for PHP", 
            "type": "php", 
            "request": "launch", 
            "port": 9000,
            "runtimeExecutable": "C:\\php7\\php.exe"
        } 
    ]
}

 

혹시 모르니 VS CODE 를 재시작 합니다.

 

테스트

php 코드를 작성하고, break point 를 설정해봅니다.

그리고 debug 텝에서 launch currently open script 를 선택하고 디버그 실행을 해봅니다.

break point 를 설정한 6 라인에서 걸려있네요.

소스 상단에 실행 옵션이 있습니다.

 

그리고 웹 브라우저에서 실행 중 디버깅을 하기 위해

xDebug for PHP 를 선택하고 디버깅을 실행해 봅니다.

break point 에 걸리지 않은 상태로 실행이 되었습니다.

해당 소스를 웹브라우저에서 실행해 봅니다.

브라우저에서는 계속해서 로딩이 돌고 있을 겁니다.

Visual Studio Code 를 확인해봅니다.

걸렸습니다.

 

이제 즐 디버딩 하세요~

 

잘 안되시는 분들은 아래 확인해 보세요.

xDebug 2 또는 3 인지 -> php.ini 의 마지막에 추가해야하는 옵션 명이 다릅니다. 위 설명에서 확인하세요.

php.ini 에 ext 경로와 위에서 다운받은 dll 이 ext 경로에 제대로 복사되었는지.

웹서버 재시작 했는지.

vscode 의 launch.json 파일에 오타가 없는지.

vscode 의 settings.json 에 php 경로가 제대로 설정되어있는지.

vscode 재시작해보시고요~

 

다들 한번에 되시길 바래요~~

 

728x90
반응형

댓글