[PHP/Codeigniter] CI에서 $this->output->set_header()가 작동하지 않을 때

in #php7 years ago

※ 이미 알고있었지만 까먹고 어제 헤맷던 사례가 있어 적어두기

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 데이터를 넣어주시면 됩니다.