본문 바로가기
프로그래밍/php

xdebug 개발 환경 구축하기

by 신일석 2019. 11. 20.

xdebug 개발 환경 구축하기

수동으로 wamp기반의 개발환경을 구축하는 과정을 정리

wamp = Windows, Apache2, Mariadb, Php

요구조건

윈도우7 또는 10에서 개발환경을 구성한다.
아파치는 mod_rewrite가 활성화되어야 한다.
php는 5.5.17버전이고 디버깅은 xdebug를 사용한다.
db는 mariadb를 사용한다.

순서

  1. apache 설치
  2. php 설치
  3. php에 xdebug 적용
  4. db설치

apache 설치

아파치 웹 서버를 설치하고 mod_rewrite를 테스트하는 순서로 진행.
apache는 '아파치'라고 읽는다.

아파치 다운로드](https://tinyurl.com/p4rblsm))

운영체제가 64비트인 경우 64비트용으로 다운로드 => httpd-2.4.41-win64-VS16.zip

파일 압축풀기

원하는 위치에 httpd-2.4.41-win64-VS16.zip 파일의 압축을 푼다.

압축을 풀면 Apache24 디렉토리가 생긴다.

apache 설정

apache 설정은 Apache24 디렉토리 아래 conf 폴더에 httpd.conf 텍스트 파일로 구성

서버 설치 경로 지정

Define SRVROOT "D:/Apache24"  

포트 설정

Listen *:80  

mod-rewrite 활성화

LoadModule rewrite_module modules/[mod_rewrite.so](mod_rewrite.so)  

주석처리된 '#'를 삭제하면 된다.

서버도메인 지정

ServerName localhost:80  

.htacces의 재정의 허용

AllowOverride All  

페이지에서 모두 찾아 All로 변경한다.

설정 결과 테스트

bin 폴더에 httpd에 '-t'옵션을 주어 테스트

httpd -t  

설정이 잘 되었다면 'Syntax OK'가 나타난다.

윈도우 서비스에 등록

아래 명령어를 이용해 윈도우 서비스에 등록한다.

httpd -k install  

참고

  • httpd -k start
  • httpd -k stop

웹드라우저에서 확인

웹브라우저를 열고 아래 주소로 이동한다.

http://localhost/

rewrite 모드 테스트

mod_rewrite가 잘 적용되었는지 테스트를 진행한다.

먼저, 두개의 파일을 만들고 웹드라우저에서 http://localhost를 다시 호출해 보자.
모든 요청을 hello.php로 연결하는 코드이다.

.htaccess

RewriteEngine On  
RewriteRule ^.*$ [hello.php](hello.php)  

hello.php

적용이 잘 되었다면 아래 결과가 나타난다.

Hello : 1
Hello : 2
Hello : 3
Hello : 4
Hello : 5

php 설치

아래 링크에서 원하는 버전(5.5.17, vc)를 찾아 다운로드 한다.
다운로드 링크](https://windows.php.net/downloads/releases/archives/))

64비트 php-5.5.17-Win32-VC11-x64.zip를 다운로드 함.

파일 압축풀기

원하는 위치에 다운로드 받은 파일의 압축을 푼다.

이제 Apache2.4가 있는 경로에 php-5.5.17가 함께 위치한다.

D:Apache2.4
D:php-5.5.17

php 설정

php-5.5.17에서 php.ini-development 찾아 사본을 만들고
새로 만든 사본의 이름을 php.ini로 변경.

이제 텍스트에디터로 열고 아래 내용을 수정.

extention 경로 지정

extension_dir = "D:/php-5.5.17/ext"  

필요한 extension을 활성화

[extension=php_bz2.dll](extension=php_bz2.dll)  
[extension=php_curl.dll](extension=php_curl.dll)  
[extension=php_fileinfo.dll](extension=php_fileinfo.dll)  
[extension=php_gd2.dll](extension=php_gd2.dll)  
[extension=php_gettext.dll](extension=php_gettext.dll)  
[extension=php_mbstring.dll](extension=php_mbstring.dll)  
[extension=php_exif.dll](extension=php_exif.dll)  
[extension=php_mysql.dll](extension=php_mysql.dll)  
[extension=php_mysqli.dll](extension=php_mysqli.dll)  
[extension=php_oci8.dll](extension=php_oci8.dll)  
[extension=php_openssl.dll](extension=php_openssl.dll)  
[extension=php_pdo_mysql.dll](extension=php_pdo_mysql.dll)  
[extension=php_pdo_sqlite.dll](extension=php_pdo_sqlite.dll)  
[extension=php_pgsql.dll](extension=php_pgsql.dll)  
[extension=php_snmp.dll](extension=php_snmp.dll)  
[extension=php_soap.dll](extension=php_soap.dll)  
[extension=php_sockets.dll](extension=php_sockets.dll)  
[extension=php_sqlite3.dll](extension=php_sqlite3.dll)  
[extension=php_sqlite3.dll](extension=php_sqlite3.dll)  
[extension=php_xmlrpc.dll](extension=php_xmlrpc.dll)  
[extension=php_xsl.dll](extension=php_xsl.dll)  

사용하기 원하는 라이브러리를 선택하면 된다.

타임존 설정

아래 경고를 피하기 위해 타임존을 설정한다.

Warning: phpinfo(): It is not safe to rely on the system's timezone settings.

date.timezone = Asia/Seoul  

apache 모듈에 php 설정

Apache2.4/conf/httpd.conf 파일에 아래 내용을 추가한다.

기본 파일에 index.php 추가

DirectoryIndex [index.php](index.php) [index.html](index.html)  

파일 맨 끝에 아래 내용을 추가


# PHP5 module

LoadModule php5_module "D:/php-5.5.17/[php5apache2_4.dll](php5apache2_4.dll)"  
AddType application/x-httpd-php .php .html .htm .html .htm  
PHPIniDir "D:/php-5.5.17"  

php의 경로는 자신의 경로로 변경한다.

httpd - t 명령어로 테스트

루트 디렉토리에 아래 내용의 index.php 파일을 만든다.

이제 웹브라우저로 http://localhost/를 호출하여 'PHP 버전' 페이지를 확인한다.

오류 해결

httpd: Syntax error on line 543 of E:/Apache24/conf/httpd.conf: Cannot load e:/php-5/php5apache2_4.dll into server

다운로드 설치
https://www.microsoft.com/ko-KR/download/details.aspx?id=30679

php에 xdebug 적용

xdebug 다운로드

먼저 php 버전을 찾고 TS 버전으로 다운로드 한다.

xdebug 다운로드](https://xdebug.org/download))

php에 적용

다운로드 받은 dll 파일을 php 폴더로 이동한다.

아래 내용을 php.ini 아래에 추가한다. 필요하다면 php경로는 자신이 지정한 경로를 사용한다.

[XDebug]
zend_extension=D:/php-5.5.17/php_xdebug-2.5.0-5.5-vc11-x86_64.dll
xdebug.remote_host=127.0.0.1
xdebug.remote_port=9000
xdebug.remote_handler=dbgp
xdebug.remote_enable = 1
xdebug.remote_autostart = 1

phpinfo()에서 확인

변경 내용을 반영하기 위해 아파치를 다시시작하고 index.php를 호출한다.

로고와 함께 아래 내용이 phpinfo 페이지에 추가된 것을 확인 할 수 있다.

Zend logoThis program makes use of the Zend Scripting Language Engine:
Zend Engine v2.5.0, Copyright (c) 1998-2014 Zend Technologies with Xdebug v2.5.0, Copyright (c) 2002-2016, by Derick Rethans

visual studio code에서 디버깅

vs code에 확장기능 설치

  • PHP Debug

VS Code 설정 (Ctrl + ,)의 User SETTINGS 에서 "php.validate.executablePath" 경로 추가

위에 내용  
"php.validate.executablePath": "D:/php-5.5.17/[php.exe](php.exe)"

index.php에 테스트용 코드를 작성

VS Code에서 디버그 설정
상단 메뉴에서 Debug / Open Configurations를 열고 launch.json 파일에 아래 내용을 추가

{  
"name": "Listen for XDebug",  
"type": "php",  
"request": "launch",  
"port": 9000  
}  

브레이크 포인트 설정
print가 있는 줄에 브레이크 포인트를 걸려면
index.php 페이지로 이동하고, print가 있는 줄에 브레이크 포인트를 잡는다.

  • 방법1. 행번호 앞에 커서를 옮기면 붉은 색 점이 나타는데 클릭!
  • 방법2. 커서를 브레이크 포인트를 걸고자 하는 줄로 이동하고 F9

상단 Debug / Start Debugging를 선택하거나 F5키를 눌러 xDebug 연동을 시작

services.msc에서 아파치 서비스를 다시 시작(위 내용 참고)

웹브라우저에서 http://localhost를 호출하면 index.php의 print가 있는 줄에서 실행이 멈추게 되고 디버깅이 시작된다.

  • 지역변수의 값이나 watch를 통해 필요한 변수를 확인할 수 있다.

mariadb 설치

생략

기타