[PHP/Codeigniter] CI에서 $this->output->set_header()가 작동하지 않을 때
※ 이미 알고있었지만 까먹고 어제 헤맷던 사례가 있어 적어두기
Codeigniter에서는 자체적으로 제공하는 output 클래스가 있습니다.
가끔 저같은 사람들이 output으로 header를 지정해놓고 출력물을 출력한 뒤 exit()으로 종료시켜버리는 경우가 있는데요.
이런 경우에는 정상적으로 php 소스 코드가 끝나는 것이 아니라 중간에 '난 탈출할꺼야! 안녕!'하고 꺼버리는 것이기 때문에 정상적으로 출력되지 않습니다.
예전에 한번 이 문제로 엄청 고생했었는데 바보같이 또 같은 짓을 해놨네요.
특정 상황에서 모든 실행을 중단하고 exit을 하고 싶다면 아래 같이 $this->output->_display();를 실행해주세요
# Example 01.
$this->output
->set_status_header(200)
->set_content_type('application/json', 'utf-8')
->set_output(json_encode($response, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES))
->_display();
만약에 출력하는 내용을 오버라이드(override)하고 싶으면 $this->output->_display($var);로 파라미터로 넘기는 변수에 String 데이터를 넣어주시면 됩니다.
- 레퍼런스
- 코드이그나이터 한국 사용자 포럼(codeigniter-kr) Guide: http://www.ciboard.co.kr/user_guide/kr/libraries/output.html
- 코드이그나이터 공식 가이드 문서: https://codeigniter.com/user_guide/libraries/output.html