CI 묻고 답하기

제목 에러 디스플레이 문제
글쓴이 아빠돼지 작성시각 2009/11/17 17:27:37
댓글 : 6 추천 : 0 스크랩 : 0 조회수 : 29156   RSS
안녕하세요.
CI기반 PHP 오류 로그를 모니터링 할 수 있는 시스템을 테스트하다 궁금한 점이 있어 질문 드립니다.

function index()
{
 echo 'a;
}

위와 같이 싱글 쿼테이션을 잘못사용하였을 경우는 정상적인 CI 오류 페이지가 보이는데요.

function index()
{
 echo "a;
}

이런 식으로 더블 쿼테이션이 사용됐을 경우의 parse error 는 CI 오류 페이지로 노출되지 않아 제어하기기 힘듭니다.
이런 경우의 익셉션 처리는 어떻게 해야 하는 지 혹시 아시는 분 계신가요?

 다음글 일본어 처리 (11)
 이전글 url segments 값으로 email주소 전송방법 (5)

댓글

변종원(웅파) / 2009/11/17 18:19:39 / 추천 0
에러 레벨이 틀려서 힘들것 같은데요?
" 로 인한 에러는 syntax error 로 php자체에서 나오는 에러구요. 
(php 자체의 에러를 php 기반의 CI에서 처리할 수 있을까요? ^^)
ci세상 / 2009/11/17 18:39:16 / 추천 0
system/codeigniter/Common.php 270줄 log_message에서 $message 찍어보시면 정상적일때 time값이 찍히는것을 확인할 수 있습니다. parse error은 이값이 없습니다. 이것을 캐치해 주시면 될것 같습니다.

config.php에서 $config['log_threshold'] = 4;로 켜두고 . system/logs 폴더에 보시면 로그 파일이 쌓이는데요 시간텀을 좀 두고 이 파일을 체크해서 ~~ 로딩 시간값이 없으면 레포팅을 해주게 할 수도 있을것 같습니다.

그냥 구조적인 분석만 해드린것이라서 도움이 되실지 모르겠습니다.^^
아빠돼지 / 2009/11/17 19:16:09 / 추천 0
 먼저 친절한 답변 감사합니다. ^^;

일단 프론트 컨트롤러의 error_reporting(E_ALL); 코드에도 불구하고 해당 오류는 _exception_handler 로 넘어오질 않고 있습니다. log_message 로도 아예 안넘어오는 듯... 지금 상태로는 CI에선 php parse error 형태의 오류를 캐치할 수 없을 거 같은 느낌인데요. 아 방법이 없을까요? 이대로라면 개발자들의 실수로 인한 php 오류를 전혀 모니터링 못한다는건데... ㅜㅜ


다크파이터 / 2009/11/17 19:24:46 / 추천 0

컴파일 오류(syntax error, parse error)는 php 엔진에서 컴파일중에 발생한 오류로  php 웹페이지에서는 제어를 할수가 없습니다.

php.ini에 있는 오류 로깅을 사용하면 CI에서 걸러지지 않는 오류에 대해 오류 로깅을 할 수 있습니다.
단, 실시간은 안되고 로깅 파일을 별도의 프로그램을 통해서 처리하는 방법외에는 없는 것으로 보이네요.


====== php.ini 설정 =============
log_errors = On
error_log = 임의폴더 파일 경로
====== php.ini 설정 =============

 

아빠돼지 / 2009/11/17 19:38:54 / 추천 0
넵 그러게요 ㅜㅜ 문제는 오류를 로그할 수 없다는 것이 아니라 쌩 오류 페이지를 그대로 사용자들에게 노출해야 한다는 점인데요. php.ini 파일에서 해당 오류를 사용자 지정 페이지로 리턴해 줄 수 있는 부분을 살펴보고 있네요. 맨날 windows 기반에서만 프로그래밍하다가 linux/php 시작한 지 얼마 안되서 상당히 힘드네요 이거 ㅎㅎ
ci세상 / 2009/11/17 23:33:03 / 추천 0