XDebug 확장 기능을 이용하면 PHP에서 디버깅을 조금 더 손쉽게 할 수 있습니다. 그동안 대부분의 PHP 개발자들이 이용하던 디버깅 방식은 아마도 echo가 아니었을까 합니다. 물론, 저도 그랬습니다. 하지만, XDebug를 이용하면 프로파일링, 리모트 디버깅, 트레이스 등의 다양한 기능을 사용해서 디버깅을 할 수 있습니다.
우선은 로컬PC에 APM을 설치한 후 디버깅 하는 방법에 대해서 설명하고 그 다음에서 외부 서버에 XDebug 모듈을 설치하고 원격 디버깅 하는 방법에 대해서 설명하겠습니다. 개인적으로는 버전관리시스템을 이용하다보니 로컬에서 디버깅을 마친 후 Commit 혹은 업로드하는 것이 더 좋다고 생각하지만 서버에서 바로 작업하는 것을 선호하는 분도 계실테니까요. ^^
또한, 로컬PC는 Windows라 가정하고 글을 쓰겠습니다. OS가 Windows가 아닌 분들은 원격 디버깅 부분을 참고하시는 게 더 나을 것 같습니다.
우선 APM을 설치합니다. PHP 4.4.1 - 4.4.7, 5.1.2 - 5.1.6, 5.2.1+ 라면 어떤 것이든 상관없습니다만, 작년부터는 PHP5 만 사용해오고 있는터라서 최신의 PHP5 기준으로 설명하겠습니다. 제가 설치한 패키지는 XAMPP라는 것으로, 버전업에 대해서 꽤 발빠르게 대응하고 있기도 하고 Linux, OSX 용의 패키지도 만들고 있기 때문에 개인적으로 마음에 들어하는 패키지입니다. 설치랄 것도 없이 다운받고 압축풀면 끝나니까 따로 설명은 안하겠습니다. 저는 C:\Program Files\xampplite 에 설치했습니다.
XDebug에 있는 확장모듈을 다운로드 받습니다. 다음에서 해당하는 버전별로 Windows용 PHP 모듈을 고르시면 됩니다.
모듈을 다운로드했으면 C:\Program Files\xampplite\php\ext 에 복사합니다. 물론, 이 경로는 아까 설치한 경로에 따라서 달라져야 합니다. 그 다음에는 C:\Program Files\xampplite\apache\bin\php.ini 파일을 수정해서, [Zend] 섹션아래에 다음 항목을 추가합니다.
zend_extension_ts = "C:\Program Files\xampplite\php\ext\php_xdebug.dll"
이제 C:\Program Files\xampplite\xampp-control.exe 를 실행해서 Apache 서버를 시작해야하는데 그 전에 Apache 설정을 조금 만져줄 필요가 있습니다. 그냥 실행하면 오류를 내면서 Apache가 정상적으로 실행이 안됩니다. ^^
우선 C:\Program Files\xampplite\apache\conf\httpd.conf 파일에서 ServerRoot 항목의 값을 다음과 같이 바꿉니다(42라인 근처).
ServerRoot "C:/Program Files/xampplite/apache"
그 다음에는 DocumentRoot 항목을 다음과 같이 바꿉니다(176라인 근처).
DocumentRoot "C:/Program Files/xampplite/htdocs"
Directory 설정도 변경합니다(203라인 근처).
<Directory "C:/Program Files/xampplite/htdocs">
C:\Program Files\xampplite\apache\conf\extra\httpd-xampp.conf 파일을 열어서 다음 항목에도 값을 변경합니다.
LoadModule php5_module "C:/Program Files/xampplite/apache/bin/php5apache2.dll"
이제 Apache를 실행합니다.
모두 정상적으로 설치되고 수정되었다면, 웹 브라우저에서 http://localhost/ 를 호출합니다. 다음과 같은 화면이 나타나면 정상입니다.
이제 XDebug 모듈이 잘 설치되었는지 확인해봅니다. http://localhost/xampp/phpinfo.php 를 주소표시줄에 입력합니다. 정상적으로 설치가 되었다면 다음과 같은 화면을 볼 수 있습니다.
이제 XDebug 모듈이 설치되었습니다.
다음편에서 본격적으로 이 모듈을 이용해 디버깅을 해보도록 하겠습니다.
[adsense]
주의! 이 글은 전체의 절반 이하의 일부 복제만 허용합니다.
설치도 쉽고
echo로 디버깅하던 것과 유사해서 좋네요 ^^
감사~
한번 사용해 봐야 겠네요... 어딘가 숨어있는 악성코드를 잡기위해서... ^^;