1. PHP XDebug 셋팅 환경 설정
1-1) 자신의 PHP VC버젼, PHP 버젼, Architecture가 무엇인지 확인한다
- 확인방법은 phpinfo()로 보면 된다.
- PHP version : 다음 사진은 PHP 5.4
- VC 버젼 : VC9 / Architecture : x86 (32bit)
- 여기에 나와 있는 비트는 PC의 사양이 아닌 Architecture의 사양임
- 만약 PHP 버전이 Thread Safe 이면 TS 버전을 받는다. Thread Safe인지 확인하는 방법은 PHP폴더 내에 php5ts.dll이라는 파일이 있거나 phpinfo에서 Thread safety를 검색하여 해당 옵션이 enabled라고 되어 있으면 Thread safe 이다.
- 따라서 나는 Thread Safety가 enabled이므로 TS이다.
1-2) 다운로드
- http://xdebug.org로 가서 위 버젼들을 다 확인한 후 맞는 XDebug를 받는다.
- 위와 같은 버젼이면 PHP 5.4 VC9 TS (32bit)을 다운 받는다.
PHP버젼 / VC버젼 / Thread / Architecture
1-3) 다운 받은 dll파일을 php폴더 내 ext폴더 안에 집어 넣는다.
1-4) php.ini 수정
- implicit_flush을 검색하여 다음과 같이 수정한다. (Off를 On으로 수정)
implicit_flush = On
- 다음을 [XDebug]에 추가한다. (php.ini 맨 밑에 확인)
[XDebug]
;; Only Zend OR (!) XDebug
zend_extension="C:\xampp\php\ext\php_xdebug-2.2.1-5.4-vc9.dll" //경로 설정 확인 할 것
xdebug.remote_enable=true
xdebug.remote_host=localhost
xdebug.remote_port=10000
xdebug.remote_handler=dbgp
xdebug.profiler_enable=1
xdebug.profiler_output_dir="C:\xampp\tmp"
- [Zend]와 관련된 부분 주석처리
2. Phpstorm에서 Debuger 설정
2-1) Phpstorm을 실행시킨 후 메뉴에 [File] - [Settings] 클릭
2-2) 항목에서 php 선택
2-3) [...] 버튼 클릭
2-4) 디버그 할 경로 지정 (ex. c\xampp\php)한후 Debugger을 Xdbug로 지정한다.
지정 다 했으면 Apply 한 후 OK
2-5) server 항목 클릭
2-6) Host 입력, Debugger 선택한 후 Apply -> OK
2-7) 다시 메뉴에서 [Run] - [Edit Configurations...]
2-8) 테스트할 파일, 해당 폴더를 선택해준다.
2-9) 테스트 코드 입력하여 테스트 해본다. 나는 다음과 같이 여러 재귀함수를 호출하도록 하여 에러가 발생하도록 하였다.
* 참고 : 다음은 에러가 아니라 PHP에서는 Noticce로 인식한다. 따라서 Notice에러를 안보이도록 설정해뒀다면
페이지에 실행시 에러가 보이지 않을 것이다. Notice가 보이도록 설정하는 방법은 내 블로그에 포스팅 해놨으니 참고 하시길 바란다.
( Notice에 대한 포스팅 : )
function a($_a){
echo $d;
return $_a;
}
function b($_b){
return a($_b);
}
function c($_c){
return b($_c);
}
print_r(c(array('param'=-->'test')));
2-10) Shift + F9 하면 결과를 확인할 수 있다.
* 참고 사이트 :
- 셋팅 영상
http://www.jetbrains.com/phpstorm/demos/remote_debugging/remote_debugging.html
- 생활 코딩
http://opentutorials.org/course/692/3756
- PhpStorm에서 Xdebug 설정과 테스트