Docker

[Docker] Intellij + PHP8 + Xdebug3 설정

먹세 2021. 9. 27. 16:33

docker 환경에서

intellij + php8 + xdebug3 설정을 해보자

 

1. xdebug 설치

2. xdebug 세팅

3. intellij 세팅

 

1. xdebug extension 설치

# xdebug3 설치
$ apt install php8.0-xdebug

# 설치된 모듈 확인
$ php -m

# xdebug 버전 확인
$ php --version

PHP 8.0.10 (cli) (built: Aug 26 2021 15:50:07) ( NTS )
Copyright (c) The PHP Group
Zend Engine v4.0.10, Copyright (c) Zend Technologies
    with Zend OPcache v8.0.10, Copyright (c), by Zend Technologies
    with Xdebug v3.0.4, Copyright (c) 2002-2021, by Derick Rethans

- localhost에서 phpinfo 확인

 

2. xdebug 세팅

$ vi /etc/php/8.0/mods-available/xdebug.ini

- 위 설정파일에 아래 설정들 입력

zend_extension=xdebug.so
xdebug.mode=develop,debug
xdebug.cli_color = 1
xdebug.start_with_request = yes
xdebug.output_dir = "/tmp/xdebug"
xdebug.log = "/tmp/xdebug/xdebug-log.log"

; rmote debugging
; nginx 설정에서 server_name 과 동일해야 정상적으로 디버깅 됨
; 디버깅 할때 브라우저 url도 아래 host명으로 접속
xdebug.client_host = host.docker.internal
xdebug.client_port = 9003
xdebug.discover_client_host = false
xdebug.idekey = INTELLIJ

; Trace
xdebug.trace_output_name = "trace.%c-%t"
xdebug.trace_format = 0
xdebug.collect_return = true
xdebug.trace_options = 1

- 서버 재시작

$ systemctl restart php8.0-fpm
$ systemctl restart nginx

 

/tmp/xdebug/xdebug-log.log 파일을 만들어준 후

php8.0-fpm 소유권한으로 만들어놓는다.

안그러면 php artisan 할때 계속 xdebug 퍼미션 에러 남

$ mkdir /tmp/xdebug
$ vi /tmp/xdebug/xdebug-log.log
:wq 로 저장

$ chown -R www-data /tmp/xdebug/

 

3. intellij 세팅

Files -> Settings 또는 Ctrl+Alt+S 단축키

-> Languages & Frameworks -> PHP 까지 가서

 

- Debug -> Xdebug 부분에 Debug port : 9000,9003 

위 부분은 기본으로 세팅 되어있어서 손댄게 없음. 

 

- Debug -> DBGp Proxy 에서

IDE key 를 xdebug.ini 에서 xdebug.idekey 와 동일한 값으로 입력.

port도 xdebug.client_port와 동일한 9003으로 맞춤.

 

 

- Servers 에서 새로 자신의 로컬 추가

Name을 정하고 실제로 테스트하게될 주소 (docker.host.internal -> nginx config에 server_name과 동일해야함) 세팅

File/Directory 에는 자신의 로컬 경로를 입력하고,

Absolute path on the server 에는 로컬과 -v 로 연결된 컨테이너 내부의 웹서버 홈디렉토리 경로를 입력

- intellij 에디터 상단에 Edit Configurations 세팅

+ 버튼 (Add New Configuration) 클릭 -> PHP Web Page 클릭

 

Name을 작성하고, Server 에서 가져오기로 조금 전에 세팅한 Server 내용을 불러온다.

 

OK 버튼 클릭

intellij 우측 상단에 Start Listening for PHP Debug Connections 버튼을 클릭해서 디버깅 활성화

 

그리고 원하는 곳에 Breaking Point 설정 하고 Debug 버튼을 누르면

 

http://host.docker.internal/?XDEBUG_SESSION_START=12725

기본 설정된 브라우저에 위 형식으로 디버깅 URL로 접속 되면서 디버깅이 가능!

반응형