CodeIgniter 주니어 트러블슈팅 면접

CodeIgniter 주니어 (1~3년) 트러블슈팅 5문항 조회수 29 · 2026-08-04 (화) 12:48:43
1 세션 관리
Easy

Q. CodeIgniter로 개발한 웹사이트에서 사용자가 로그인 후 페이지를 이동할 때마다 로그인이 풀린다는 문제가 보고되었습니다. 세션이 유지되지 않는 이 문제의 원인으로 어떤 것들을 확인해야 하며, 어떻게 해결하시겠습니까?

세션 라이브러리 로드 여부와 config 파일의 세션 관련 설정을 먼저 점검해보세요.

A. 모범답안

먼저 autoload.php에서 세션 라이브러리가 자동 로드되는지 확인하거나, 각 컨트롤러에서 $this->load->library('session')으로 로드했는지 확인합니다. 다음으로 config.php에서 sess_driver, sess_cookie_name, sess_expiration 등 세션 설정이 올바른지 점검합니다. 특히 sess_save_path가 files 드라이버 사용 시 쓰기 권한이 있는 경로로 설정되었는지 확인합니다. 쿠키 도메인이 여러 서브도메인에서 작동해야 한다면 sess_cookie_domain을 '.example.com' 형식으로 설정합니다. 마지막으로 서버의 세션 저장 디렉토리 권한과 php.ini의 session.gc_probability 설정도 확인하여 세션이 조기에 삭제되지 않도록 합니다.

핵심 포인트
  • • 세션 라이브러리 로드 확인 (autoload.php 또는 수동 로드)
  • • config.php의 세션 설정 검증 (driver, save_path, expiration)
  • • 세션 저장 경로의 쓰기 권한 확인
답변에 넣으면 좋은 키워드
세션 라이브러리 autoload.php config.php sess_save_path sess_driver 쿠키 도메인
실무에서는

사용자 인증 시스템에서 세션 설정 오류는 로그인 유지 실패의 가장 흔한 원인입니다.

Follow-up 질문

세션 데이터를 데이터베이스에 저장하도록 변경하려면 어떻게 설정해야 하나요?

2 데이터베이스 연결
Easy

Q. CodeIgniter 프로젝트를 로컬 환경에서 개발 서버로 이전한 후 'Unable to connect to database' 에러가 발생합니다. 데이터베이스 연결 문제를 해결하기 위해 어떤 순서로 디버깅하시겠습니까?

database.php 설정 파일의 호스트, 사용자명, 비밀번호, 데이터베이스명을 환경에 맞게 수정했는지 확인하세요.

A. 모범답안

먼저 application/config/database.php 파일에서 hostname, username, password, database 값이 개발 서버의 실제 DB 정보와 일치하는지 확인합니다. 다음으로 MySQL 또는 해당 DB 서버가 실행 중인지 확인하고, 터미널이나 phpMyAdmin으로 직접 접속 테스트를 수행합니다. dbdriver가 mysqli 또는 적절한 드라이버로 설정되어 있는지, PHP에 해당 확장이 설치되어 있는지 확인합니다. DB 사용자에게 해당 데이터베이스에 대한 권한이 부여되어 있는지 확인하고, 필요시 GRANT 명령으로 권한을 부여합니다. 마지막으로 방화벽이나 포트(기본 3306) 설정이 DB 접속을 막고 있지 않은지 확인합니다.

핵심 포인트
  • • database.php의 접속 정보 검증 (hostname, username, password, database)
  • • DB 서버 실행 상태 및 직접 접속 테스트
  • • DB 사용자 권한 및 PHP 드라이버 설치 확인
답변에 넣으면 좋은 키워드
database.php hostname dbdriver mysqli DB 권한 phpMyAdmin
실무에서는

서버 이전이나 배포 시 데이터베이스 연결 설정 오류는 가장 빈번하게 발생하는 장애입니다.

Follow-up 질문

개발, 스테이징, 운영 환경별로 다른 데이터베이스 설정을 관리하는 방법은 무엇인가요?

3 404 에러
Medium

Q. CodeIgniter 프로젝트를 Apache 서버에 배포한 후 메인 페이지는 정상 작동하지만, 다른 URL로 이동하면 모두 404 Not Found 에러가 발생합니다. URL 라우팅이 작동하지 않는 이 문제의 원인과 해결 방법을 설명해주세요.

.htaccess 파일과 Apache의 mod_rewrite 모듈 활성화 여부를 확인해보세요.

A. 모범답안

이 문제는 주로 URL rewrite 설정이 제대로 되지 않아 index.php가 URL에 포함되지 않은 요청을 처리하지 못할 때 발생합니다. 먼저 프로젝트 루트에 .htaccess 파일이 존재하는지 확인하고, RewriteEngine On과 index.php를 제거하는 규칙이 포함되어 있는지 확인합니다. Apache의 mod_rewrite 모듈이 활성화되어 있는지 확인하고(a2enmod rewrite), httpd.conf나 사이트 설정에서 AllowOverride가 All로 설정되어 있는지 확인합니다. config.php에서 index_page 값이 빈 문자열로 설정되어 있는지 확인합니다. 만약 .htaccess를 사용할 수 없는 환경이라면 config.php의 index_page를 'index.php'로 유지하고 URL에 index.php를 포함시키는 방법도 고려할 수 있습니다.

핵심 포인트
  • • .htaccess 파일 존재 및 rewrite 규칙 확인
  • • Apache mod_rewrite 모듈 활성화 및 AllowOverride 설정
  • • config.php의 index_page 설정 확인
답변에 넣으면 좋은 키워드
.htaccess mod_rewrite AllowOverride index_page RewriteEngine URL 라우팅
실무에서는

Apache 서버 배포 시 .htaccess 미설정은 라우팅 실패의 주요 원인이며, 반드시 사전 점검이 필요합니다.

Follow-up 질문

Nginx 서버에서는 URL rewrite를 어떻게 설정해야 하나요?

4 파일 업로드
Medium

Q. 사용자가 이미지를 업로드하는 기능에서 간헐적으로 '파일 업로드 실패' 에러가 발생합니다. 특히 큰 이미지 파일을 업로드할 때 문제가 더 자주 발생한다는 보고가 있습니다. 이 문제를 진단하고 해결하는 과정을 설명해주세요.

PHP와 서버의 파일 업로드 크기 제한, 그리고 업로드 디렉토리의 권한을 확인해보세요.

A. 모범답안

먼저 CodeIgniter의 업로드 에러 메시지를 $this->upload->display_errors()로 확인하여 구체적인 원인을 파악합니다. php.ini에서 upload_max_filesize와 post_max_size 값이 업로드하려는 파일 크기보다 충분히 큰지 확인하고, 필요시 값을 증가시킵니다. max_execution_time과 max_input_time도 큰 파일 업로드를 처리할 수 있도록 충분한 시간으로 설정합니다. 업로드 대상 디렉토리(보통 uploads/)의 쓰기 권한이 755 또는 777로 설정되어 있는지 확인합니다. CodeIgniter 업로드 라이브러리 설정에서 max_size, allowed_types 등이 적절히 설정되어 있는지 검증합니다. 마지막으로 디스크 용량이 충분한지도 확인합니다.

핵심 포인트
  • • 업로드 에러 메시지 확인 (display_errors)
  • • php.ini의 upload_max_filesize, post_max_size 설정 증가
  • • 업로드 디렉토리 쓰기 권한 확인
답변에 넣으면 좋은 키워드
upload_max_filesize post_max_size display_errors 파일 권한 업로드 라이브러리 max_size
실무에서는

파일 업로드 기능은 서버 설정과 애플리케이션 설정이 모두 맞아야 하므로 배포 전 충분한 테스트가 필요합니다.

Follow-up 질문

대용량 파일 업로드 시 청크 업로드(chunk upload)를 구현하는 방법은 무엇인가요?

5 성능 저하
Medium

Q. CodeIgniter로 개발한 게시판에서 페이지 로딩이 점점 느려진다는 사용자 불만이 접수되었습니다. 특히 목록 페이지가 5초 이상 걸리는 경우도 있습니다. 데이터베이스 쿼리가 원인일 가능성이 높다고 판단될 때, 어떻게 원인을 분석하고 해결하시겠습니까?

CodeIgniter의 Profiler를 활성화하여 실행된 쿼리와 실행 시간을 확인해보세요.

A. 모범답안

먼저 컨트롤러에서 $this->output->enable_profiler(TRUE)를 활성화하여 실행되는 모든 쿼리와 각 쿼리의 실행 시간을 확인합니다. 느린 쿼리를 식별한 후, WHERE 절에 사용되는 컬럼에 인덱스가 설정되어 있는지 확인하고 필요시 인덱스를 추가합니다. N+1 쿼리 문제가 있는지 확인하고, 반복문 안에서 쿼리를 실행하는 대신 JOIN이나 WHERE IN을 사용하도록 리팩토링합니다. 페이지네이션이 적절히 구현되어 있는지 확인하고, 한 번에 너무 많은 데이터를 가져오지 않도록 LIMIT을 적용합니다. CodeIgniter의 쿼리 캐싱 기능이나 result 캐싱을 활용하여 동일한 쿼리 결과를 재사용하도록 최적화합니다. 마지막으로 데이터베이스 slow query log를 확인하여 시스템 레벨에서도 문제를 분석합니다.

핵심 포인트
  • • Profiler로 쿼리 실행 시간 분석
  • • 인덱스 추가 및 N+1 쿼리 문제 해결
  • • 페이지네이션과 쿼리 캐싱 적용
답변에 넣으면 좋은 키워드
Profiler enable_profiler 인덱스 N+1 쿼리 쿼리 캐싱 페이지네이션 slow query log
실무에서는

데이터가 누적되면서 쿼리 성능이 저하되는 것은 흔한 문제이며, 프로파일링을 통한 조기 발견이 중요합니다.

Follow-up 질문

CodeIgniter에서 Redis나 Memcached를 사용한 캐싱을 구현하는 방법을 설명해주세요.

댓글 0

로그인 후 댓글을 작성할 수 있습니다.

아직 댓글이 없습니다. 첫 번째 댓글을 남겨보세요!