사용자 설정 파일 config/config.user.inc.php
를 작성해 놓으면 config/config.inc.php
파일의 설정보다 우선해서 적용되어 디버깅이 가능하다.
config.user.inc.php 예시
define('__DEBUG__', 1);
define('__DEBUG_OUTPUT__', 0);
define('__DEBUG_PROTECT__', 1);
define('__DEBUG_PROTECT_IP__', '127.0.0.1');
define('__DEBUG_DB_OUTPUT__', 0);
define('__LOG_SLOW_QUERY__', 0);
define('__OB_GZHANDLER_ENABLE__', 1);
define('__ENABLE_PHPUNIT_TEST__', 0);
config.user.inc.php 설정
__DEBUG__
기본값은 0 으로, 이것은 디버깅 메시지 출력을 할 것인지, 어떤 것을 할 것인지를 설정하는 지시자이다.
- 0 : 디버그 메시지를 생성/ 출력하지 않음
- 1 :
debugPrint()
함수를 통한 메시지 출력 - 2 : 소요시간, Request/Response info 출력
- 4 : DB 쿼리 내역 출력
이 지시자의 설정값은 비트 OR 연산으로 값을 설정한다. 예를 들어, 모든 설정을 활성시키고자 한다면 7로 설정하면 된다.
__DEBUG_OUTPUT__
기본값은 0 으로, 이것은 디버그 메시지의 출력 방법에 대해 설정하는 지시자이다.
0 : files/_debug_message.php
에 연결하여 출력
1 : HTML 최하단에 주석으로 출력 (Response Method가 HTML 일 때)
2 : Firebug 콘솔에 출력
__DEBUG_PROTECT__
기본값은 1 이고 디버깅 메시지를 특정 IP 주소에서만 보여줄 것인지 모든 아이피에서 볼 수 있게 할 것인지를 설정한다.
- 0 : 제한 없음 (권장하지 않음)
- 1 : 지정한 IP 주소에만 허용
가급적 1 로 설정하는 것이 좋을 것이다. 그렇지 않은 경우 이로 인해 발생할 수도 있는 문제는 심각해질 수도 있다.
__DEBUG_PROTECT_IP__
기본값은 127.0.0.1 이고, 이 지시자는 __DEBUG_PROTECT__ 지시자의 값을 1로 설정했을 때 디버그 메시지 출력을 허용할 IP 주소를 설정하는 것이다. 여기에는 자신의 IP 주소를 설정해주면 된다.
디버깅 메시지 출력
소스코드에 다음과 같이 debugPrint
함수를 추가하면 된다.
debugPrint("Hi, there!!");
debugPrint("document_srl is : ".$document_srl);
추천 디버깅 방법
FirePHP 등은 속도가 느리므로 사용을 추천하지 않는다.
디버깅 결과를 파일로 저장하도록 __DEBUG_OUTPUT__
을 0으로 설정하고 터미널에서 tail -f files/_debug_message.php
명령어를 실행하거나
소스코드에 return new Object(-1, "message");
를 추가한다. 단, 이 방법은 게시물이나 댓글을 작성하는 시점(Context::get('act')=='procBoardInsertDocument' && $called_position == 'before_module_proc') 등에서는 표시되지 않는다.
참고자료
- Xpress Engine 디버깅 이용하기 http://www.nickspace.cn/xe/s2/339
- XE 개발, Firebug + FirePHP로 디버그하기 http://xinics.tistory.com/73
- Firebug와 FirePHP를 통한 XpressEngine의 디버깅 http://www.xpressengine.com/index.php?mid=tip&search_target=tag&search_keyword=php&page=1&document_srl=17899854