CI 묻고 답하기

제목 PHP5.5 + CodeIgniter 2.2 환경에서 CLI가 정상 실행되지 않습니다.
글쓴이 Jaydee 작성시각 2015/05/31 13:30:28
댓글 : 5 추천 : 0 스크랩 : 0 조회수 : 14952   RSS
안녕하세요,
PHP 5.5에 CodeIgniter 2.2를 사용하고 있습니다.
환경설정은 다음과 같습니다. 

[Host]
OS X 10.10.3 

[Guest] ( vagrant )
Ubuntu 12.04 LTS 
PHP 5.5 with FPM
Nginx 

현재 /application/core 에  Controller를 재정의한 SB_Controller를 구현해 두었습니다.
물론, config.php에 prefix를 'SB'로 정의해 두었구요. 
실행시키고자 하는 controller는 다음과 같이 정의하였습니다.

class PushDaemon extends SB_Controller ...

postman을 이용한 http 접근은 정상적으로 이루어집니다. 
문제는, 해당 controller를 Codeigniter CLI로 다음과 같이 실행 하였을 때, 

php index.php pushdaemon 

SB_Controller의 코드가 그대로 출력이 되며 SB_Controller를 찾을 수 없다는 메시지가 뜹니다. 
제가 굳이 버젼을 명시한 이유는, PHP 5.4 및 PHP 5.3에서는 정상적으로 실행이 되기 때문입니다.
유독 PHP 5.5에서만 이러한 문제가 발생합니다. 

혹시 경험해 보신 분이 계시면 고견 부탁드립니다.
읽어 주셔서 감사합니다. 
 다음글 컨트롤러 생성자에 파라미터를 사용하는 방식 (2)
 이전글 특정 라이브러리가 실행되기 전에 hook을 해서 실행을... (1)

댓글

한대승(불의회상) / 2015/05/31 14:16:36 / 추천 0
코드가 그대로 출력 된다는건 php 코드로 인식하지 못했다는 거죠.
SB_Controller.php 가 <?php 로 시작하는지 부터 확인해 보세요.
Jaydee / 2015/05/31 14:18:57 / 추천 0
답변 감사합니다.
네, 원래는 <?으로 되어있었습니다만, <?php로 고쳐 보았습니다. 하지만 변화는 없었습니다.
설정도 확인해보니 short_tags on 으로 되어있었습니다. 
한대승(불의회상) / 2015/05/31 14:24:19 / 추천 0
cli 실행시 웹서버에 적용된 php.ini 와 다른가 보네요.
Jaydee / 2015/05/31 14:24:52 / 추천 0
문제 해결했습니다. 한대승님께 진심으로 감사드립니다.

제 첫번째 댓글에서 변화가 없었다고 했는데, SB_Controller.php 의 코드가 아니라 제가 임의로 추가한 sb_config.php 파일의 내용이 출력되고 있는것을 변화가 없었다고 착각하였던 것입니다.

한대승님의 말씀에서 힌트를 얻어 해당 controller가 참조하는 모든 파일의 php 맨 앞 태그를 <? 에서 <?php로 고치자 문제가 해결되었습니다. 

이 말은 /etc/php5/fpm/php.ini 에 short_tags on 으로 되어 있더라도, CLI 실행을 위해서는 php문서 맨 앞에 <?가 아닌 <?php 를 사용하여야 한다는 말이 되겠습니다.

다시 한번 감사드립니다. 
Jaydee / 2015/05/31 14:38:43 / 추천 0
추가합니다. 결론은, 제 무지로 인한 실수였습니다.

저는 php-fpm 을 사용하고 있었는데 설정파일은 /etc/php5/fpm/php.ini 에 있고, 
php CLI 의 설정파일은 /etc/php/cli/php.ini 입니다.

당연히, short_tags on 설정 값이 달라서 나는 에러였던 것입니다.
다시 한번 한대승님께 감사드립니다.