본문 바로가기

Language/PHP

[CodeIgniter] 설정

코드이그나이터의 설정

코디이그나이터의 설정의 목적 :

애플리케이션의 동작을 코드를 통해 변경하는 것이 아니라,

필요에 따라 설정값을 변경함으로써 애플리케이션이 다르게 동작하게 하는 것.


설정이 사용되는 경우

개발 애플리케이션과 실제 서비스 되는 애플리케이션을 구분하는 경우에 많이 사용한다.


개발할 때 사용하는 소스와 서비스되는 소스는 동작하는 경우가 다른 경우가 많다 .

대표적으로 로그(시스템의 상태를 알려주는 역할)

로그를 생성하는 과정에서 부하가 발생하고, 로그안에 시스템적으로 중요한 정보가 노출될 수 있으므로, 서비스 소스에서는 로그를 꺼놓는 경우가 많다.

즉, 어떤 경우에는 로그를 켜고, 끄는 것과 같은 설정 파일을 따로 구분하는 이유가 되는 것이다.


또는 시스템의 따라서 로직을 변경하는 것이 아니라 미리 준비되어 있는 설정값을 변경하는 것을 통해서 시스템에 상황에 따라 긴요하게 대비할 수 있다.



application>config

 :  아래 있는 파일들이 설정과 관련된 파일


중요한 파일 : config.php / databases.php / autoload.php


config.php

  • 필수적인 설정 파일
  • 코드이그나이터의 기본적인 동작들에 대한 설정을 확인하고 변경할 수 있다.

database.php

  • 데이터베이스와 관련된 설정
  • 접속hostname, username 등 굉장히 중요한 정보(보안 관련).


autoload.php

  • 코드이그나이터에서 제공하는 라이브러리와 직접만드는 라이브러리, 그리고 헬퍼
  • 그런 것들 중에서 자주 사용되는 것들을 매번 로드하는게 번거로울 수 있다. 이때 $autoload['libraries']=array(); 에 추가.


hooks.php

  • 코드이그나이터는 기본적으로 애플리케이션과 시스템폴더가 잇다.
  • 시스템폴더는 코드이그나이터의 로직이 들어있고
  • 애플리케이션은 개발자의 로직이 들어있다.


* 코드이그나이터를 심화해서 사용하다보면, 코드이그나이터의 방식이 비효율적일 때가 있다. 이때, 수정하는 것도 방법이지만, 코드이그나이터의 버전없을 했을 때 그 파일들이 덮어씌우게 된다면 수정한 로직과 새로운 코드이그나이터의 버전이 충돌할 가능성이 크다.

따라서, config > hooks.php 코드이그나이터의 기본적인 동작에 개발자 로직을 추가해서 커스터마이징한 코드이그나이터의 동작을 만들 수 잇다. : 나중에 버전업될때 안전하게 업그레이드(마이그레이션)될 수 있다.


routes.php

  • URI 라우팅이라고 하는 기능과 연결되어 있다.
  • 코드이그니아터는 기본적으로 URI의 키값에 따라서 거기에 해당하는 Controller가 정해져 있기 때문에, 그 기본적인 규칙을 변경하고 싶을 경우에 사용.

설정 파일 관리하는 방법


웹개발을 하게 되면 버전관리시스템을 사용하게 되는데 설정파일을 어떻게 관리 할 것인가


설정파일은 상당히 민감한 정보가 많다

대표적 :  database.php (보안과 관련되어있기 때문에)

이 중요한 파일을 소스관리안에 포함시켜 놓게 되면, 버전관리 시스템안에 데이터베이스에 대한 민감한 정보가 올라갈 수 있다.

따라서 버전관리에 포함시켜서 안될 파일이다.

config라는 폴더에 template(자신이 정하고 싶은 폴더명)이라는 폴더를 만들어서 그 안에 이 파일을 넣어놓는다.

config.php  파일에서는  $config['encryption_key']= ''; 는 코드이그나이터 내부적으로 여러가지 용도로 사용하는 보안과 관련된 정보. 이 파일도 위 폴더에



▣ 깃을 사용해서 위에서 만든 폴더를 버전관리 하는 방법(옛날에는 이렇게 해줬어야함)


1. 터미널에서 template 폴더까지 이동

2. config.php 와 database.php 파일 수정하기 (중요한 정보 지우기)

- config.php : $config['encryption_key'] = ''; 작은따옴표 안에 내용비우기

- database.php : hostname, username, password 지우기

3. git add *.php

현재 디렉토리에 있는 config 파일들을 stage로 올리기

4. git status

두개의 파일이 stage로 올라가있는 상태임을 확인할 수 있다.

5.application에 .gitignore라는 파일(깃에서 약속되어져있는파일, 저런파일이 존재한다면 이 파일에 해당되는 파일들을 버전관리 하지 않겠다는 약속)을 만든다.

.gitignore 파일은 git으로 올릴 폴더를 저장소로 만들 때(git init) 자동으로 생성되고 알아서 Untracted 해줌.

폴더 구조에서는 보이지 않으니 터미널로 작업할 것.

파일안에 다음 내용 입력

/application/config/database.php

/application/config/config.php

6. 기존에 config 밑에 있던 두 파일은 삭제 ( 혹시 중요한 정보 있다면 미리 잘 보관하기 )

7. git add .gitignore

이 폴더를 stage에 올리기 (3번에서 올린 파일과 함께 총 3개의 파일이 stage에 있음.)

8. git commit -m 'config.php, datbase.php 버전관리에서 제외'

깃에 커밋 완료

9. 커밋완료하고 다시 템플릿에 있던 파일을 원래 위치에 복사하기.

10. 다시 git status로 확인하게 되면 트래킹이 되지 않기 때문에 파일을 옮기고 작성했던 기록이 보이지 않음.




▣ 코드이그나이터의 환경


코드이그나이터로 만든 애플리케이션을 어떤 용도로 사용할 것인가를 지정해주는 것.

home directory 에서 index.php 파일안에

define('ENVIRONMENT','development');

development를 변경할 수 있다 : 테스트 환경일 때와 프로덕션으로 바꿀 수 있다.

그 값에 따라 바로 아래에서 코드를 확인해보면

개발환경에는 에러메세지가 보이게

테스팅과 프로덕션 환경에서는 에러메세지가 보이지 않게 되어 있다.


application>config> development라는 폴더를 만들고  production파일을 만든 후에

development폴더 아래에  config.php 파일을 복사해서 붙여넣으면 그 환경일 때 그 파일을 사용하게 된다.

이렇게 잘 작동되는지 확인하는 법

development > config.php 파일에서 echo 'development';

production > config.php 파일에서 echo 'production';




* index.php파일을 복사해서 dev.php 라고 만들고 dev.php파일의 환경은 development로 하면 URI로 접근할 때 각각 다르게 확인할 수 있다. 




config.php 안에 있는 설정 정보의 사용하기

기본 설정 정보를 가져오기 : $this->config->item('원하는설정의 이름'); 설정에 셋팅되어 있는 값이 리턴, 값이 없다면 false를 리턴함

MVC 어디에서든 호출할 수 있다.


설정 정보를 사용하고 사용자가 직접 설정을 추가해서 직접 추가한 설정을 사용하는 방법


application/config/config.php 파일에 $config 배열에 값을 추가하거나 별도의 파일을 만들어서 추가할 수 있다.

파일을 만들 경우 controller에서 $this->load->config('파일명');으로 꼭 로드를 시켜주고, 기본 사용법과 동일하게 $this->config->item('파일명')으로 설정해주면 된다. item메소드는 설정이 없다면 false를 리턴한다.

'Language > PHP' 카테고리의 다른 글

PHP 시작하기 (기본명령문, 변수)  (0) 2017.12.14
[CodeIgniter] 로그  (0) 2017.08.19
[CodeIgniter] Helper  (0) 2017.08.18
[CodeIgniter] URI Routing  (0) 2017.08.17
[CodeIgniter] MVC  (0) 2017.08.17