처음부터 차근차근

CodeIgniter 설정 본문

Framework/CodeIgniter

CodeIgniter 설정

_soyoung 2021. 10. 25. 15:58
반응형
CodeIgniter 설정

 

CodeIgniter에서 설정 파일을 수정하여 웹 애플리케이션의 기본 동작을 변경할 수 있다.

CodeIgniter에서 설정 파일은 application / config 아래에 있다.

 

 

 

주요 설정 파일

 

config.php

CodeIgniter에서 가장 기본적인 설정파일이다.

CodeIgniter 기본 동작 방식에 대하여 설정할 수 있다.

 

 

database.php

database 관련 설정 파일이다.

db에 접속할 때 필요한 정보들이 담겨있고, 보안이 매우 중요한 파일이다.

 

 

autoload.php

라이브러리를 로드하는 파일이다.

여기에 라이브러리를 미리 로드해놓으면 웹 애플리케이션이 처음 동작됨과 동시에 라이브러리가 같이 로드된다.

때문에 라이브러리를 사용할 때 라이브러리를 직접 로드하지 않아도 된다.

 

 

hook.php

CodeIgniter의 기본 로직을 바꾸고 싶을 때 system 파일을 직접 변경하게 되면 나중에 버전 up을 하게 될때 system 설정 파일이 overwrite가 안돼서 오류가 생길 수 있다.

이럴 때 사용하는 파일이다.

즉, hook.php는 CodeIgniter의 기본 기능에다 새로운 기능을 추가할 수 있는 파일이다.

 

 

route.php

route 이름 그대로 uri routing과 연관되어 있는 파일이다.

url 규칙을 변경할 수 있는 있다.

 

 

 

 

CodeIgniter 설정 구조

 

htdoc / 

application은 개발자의 로직이 들어가고,

system안에는 CodeIgniter의 로직이 들어간다.

그래서 개발자가 직접 구현한 부분은 application에 들어가있고,

웹 애플리케이션에서 공통적으로 들어가는 부분은 system 안에 들어가있다.

 

 

 

 

설정 파일 버전 관리하기

 

설정 파일 중 database.php, config.php 같은 파일은 중요한 정보가 들어있기 때문에 보안이 매우 중요하다.

그래서 git과 같은 버전 관리를 할 때 저 파일들을 repository에 그대로 올라가지 않도록 배제 시켜야한다.

그 방법에는 .gitignore을 사용하는 방법이 있다.

 

 

 

 

개발 환경 설정하기

 

htdoc / index.php 안에 들어가보면 아래와 같은 것을 볼 수 있다.

define 뒤에 development(뜻 : 개발)는 현재 코딩하고 있는 환경이 개발 환경이라는 뜻이다.

case문을 보면 development가 있는데, 그 밑에 error_reporting(-1); 를 볼 수 있을 것이다.

이것은 모든 error 메세지가 출력되도록 하는 코드이다.

 

반대로 case문의 testing(뜻 : 다 만들고 테스팅하는 환경)과 production(뜻 : 결과물) 아래에는

error_reporting(E_ALL & ~E_NOTICE...); 코드가 있는데 이것은 error 메세지가 출력이 되지 않도록 한다.

 

따라서 define 뒤에 밑줄 친 곳에 development를 쓰느냐 production을 쓰느냐에 따라서 개발 환경이 변경된다.

현재 환경을 개발 환경으로 두고 싶으면 define 뒤를 development로 변경하고, 현재 환경을 완성된 결과물을 보는 환경으로 두고 싶으면 production이나 testing이라고 변경을 하면 된다.

 

개발 환경을 바꾸는 방법

-> htdoc / index.php에 들어가서 define('EVIRONMENT', ...) 부분을 develoment 이나 production으로 변경한다.

 

하지만 이 방법은 너무 불편하다.

그리고 불편할 뿐만 아니라 config파일은 설정에 따라 변경할 수 없기 때문에 사용할 수 없다.

따라서 index.php 같은 파일을 하나 더 만드는 방법을 사용해야 한다.

 

1. htdoc 밑에다 index.php를 복사해서 이름을 바꿔 develop.php를 하나 더 만든다.(이름은 상관 없음)

 

 

2. index.php의 개발환경은 production으로, development의 개발환경은 development로 바꾼다.

index.php
 develop.php

 

 

3. application / config / development, application / config / production 을 새로 만든다.

그리고 그 안에다 application / config.php를 복사해서 집어넣는다.

이렇게 하면 url에 index.php 대신 develop.php를 사용했을 땐 development / config.php 파일이,

index.php을 사용했을 땐 production / config.php 이 적용된다.

 

결과

보시다시피 잘 되는 것을 확인할 수 있다.

 

 

이렇게 개발 환경을 나눈다면 아마 development.php 치고 들어갔을 때는 잘 들어가지는데 메뉴를 클릭하거나 링크된 것을 클릭하면 아마 index.php로 다시 바뀔 것이다.

이런 부분을 url helper의 base_url() 메서드를 사용하면 해결할 수 있다.

base_url() 메서드에 관한 내용은 아래에 있다.

 

 

 

 

helper - base_url()

 

development.php 치고 들어갔을 때는 잘 들어가지는데 메뉴를 클릭하거나 링크된 것을 클릭하면 아마 index.php로 바뀌는 이유는

이런식으로 직접 링크를 걸었기 때문이다.

그래서 이 직접 링크걸은 것을 지우고 url helper의 base_url() 메서드를 사용하면 해결할 수 있다.

 

base_url() 메서드란 url helper 함수 중 하나로, config파일의 base_url 부분을 읽어들여와서 매개변수로 받은 문자열과 합쳐주는 일을 한다.

 

base url() 코드

<?php 
    echo base_url('page/category');
?>

config.php 파일의 base_url 값이 http://localhost/ 라면 저 코드는 http://localhost/page/category 를 출력한다.

 

 

예제)

1. url helper를 로드한다.

$this->load->helper('url');

 

2. config.php 파일로 가서 base_url을 아래와 같이 변경한다.

 

3. 직접 연결했던 링크를 아래와 같이 base_url() 함수를 호출하는 내용으로 바꾼다.

끝!

 

 

 

 

config.php 파일

 

자주 사용하는 것만 정리했다.

 

$config['language'] = 'english';

언어를 설정한다.

 

$config['enable_hooks'] = FALSE;

hooking 기능을 사용할 수 있게 한다.

 

$config['subclass_prefix'] = 'MY_';

사용자가 라이브러리를 새로 만들 때 파일 명 앞에 자동으로 MY_를 붙여준다.

(application / libraries)

 

$config['log_threshold'] = 0;

로그를 얼마나 자세하게 표현 할 것인가 설정한다.

0 = 로깅을 하지 않음

1 = error인 경우에만 error 메세지 출력

2 = Debug 메세지 출력

3 = Informational 메세지 출력

4 = 모든 메세지 출력

 

$config['log_path'] = '';

로그 파일을 저장할 위치이다.

기본 위치는 application/logs/ 이다.

 

$config['cache_path'] = '';

캐쉬 파일을 저장할 위치이다.

기본 위치는 application/cache/ 이다.

 

 

 

설정 값 가져오기

 

$this->config->item('설정이름');

config.php 파일의 '설정이름'의 값을 가져온다.

설정 값이 존재하지 않는다면 false를 리턴한다.

ex) $this->config->item('base_url');   // 이러면 base_url 값이 리턴됨

 

 

 

 

사용자 정의 설정

 

config 파일에 있는 설정이 다가 아니라 개발자가 직접 설정을 추가할 수 있다.

사용자 정의 설정하는 방법에는 2가지가 있다.

 

1. $config 배열에 값 추가하기

$config['이름'] = '값';

을 해서 설정을 추가하고 $this->config->item('설정이름'); 해서 값을 가져온 다음 사용하면 된다.

ex) 

config.php에 추가
controller에서 값을 가져옴(어디서 가져오는 지는 상관없음)
결과

 

 

2. 설정 파일 새로 만들기

application / config 아래에다 새 설정파일을 만들어서 설정 파일을 로드한 후 값을 사용한다.

* 설정 파일을 새로 만들면 꼭 load를 한 후 사용해야 한다. * 

 

설정 파일 로드 하는 코드

$this->load->config('.php 뺀 설정파일 이름');

 

ex) 

설정파일을 만든다.

development 개발 환경에서 만들고 싶은 설정 파일이어서 application / config / development 에다 만들었다.

 

 

newSetting.php에다 아래의 내용을 적는다.

if(!defined('BASEPATH')) exit('No direct script access allowed'); 는 다른 config파일에도 있는 코드인데

사용자가 url로 이 파일에 접근 할 수 없도록 하는 코드이다.

 

controller에서 파일 로드하고 값 가져왔다.

결과

 

 

 

 

 

 

출처 : 'CodeIgniter - 생활코딩' 변형 및 요약

반응형

'Framework > CodeIgniter' 카테고리의 다른 글

파일 업로드  (0) 2021.11.02
로그  (0) 2021.10.26
Form Validation  (0) 2021.10.17
Helper  (0) 2021.10.13
URI 매핑 변경하기  (0) 2021.10.12
Comments