CI 묻고 답하기

제목 여러환경 처리 관련해서 질문있습니다
글쓴이 허니버터아몬드1 작성시각 2015/05/14 13:30:29
댓글 : 5 추천 : 0 스크랩 : 0 조회수 : 14665   RSS
index.php에서 ip주소 값을 받아와서

실서버 주소면 production으로 define하고 아니면 development로 설정해 두었는데요

폴더를 config밑에 development/production 으로 따로 생성하지 않고 config/database.php 파일 내부에서 현재 defined된 ENVIRONMENT값을 읽어와 db설정을 해보고 싶습니다.

 
if (defined('ENVIRONMENT'))
{
    switch (ENVIRONMENT)
    {
        case 'development':
            $active_group = 'default';
            break;

        case 'testing':
        case 'production':
            $active_group = 'product';
            break;

    }
}

$active_record = TRUE;


이런식으로 설정하고 아래 부분에 값을 만들어놨는데

mysqli_connect(): (HY000/2002): No route to host 라고 에러가 뜨네요
log_message로 환경이 defined된건 확인했습니다.

 다음글 [재질문] admin 로그인이 안되고 있습니다. (6)
 이전글 특정 vhost의 log_message가 정상작동하지 ... (4)

댓글

변종원(웅파) / 2015/05/14 13:45:09 / 추천 0
$active_group 이 config까지 도달하지 않을 겁니다.
상수로 선언하고 database.php에서도 선언한 상수로 사용하시면 됩니다.
허니버터아몬드1 / 2015/05/14 14:12:43 / 추천 0
if (defined('ENVIRONMENT'))
{
    switch (ENVIRONMENT)
    {
        case 'development':
            defined('active_group','default');
            break;

        case 'testing':
        case 'production':
            defined('active_group','product');
            break;
    }
}
    
    $active_record = TRUE;


변종원(웅파) //이렇게 하라는 말씀이신가요??
 
A PHP Error was encountered

Severity: Warning

Message: defined() expects exactly 1 parameter, 2 given

Filename: config/database.php

Line Number: 58

이렇게 에러가 나오네요...
초보라 잘 이해가 가지 않습니다 ㅠㅜ
변종원(웅파) / 2015/05/14 15:56:32 / 추천 0
상수 선언은 index.php에서 하시면 되고 그 상수를 database.php에서 사용하는 겁니다.

상수나 변수나 똑같습니다. 값을 할당 했으면 사용을 해야겠죠.
선언하신대로라면 다음과 같이 사용하면 되고
$active_group = active_group;

상수는 대문자로 선언하고 사용하세요.
$active_group = ACTIVE_GROUP;
허니버터아몬드1 / 2015/05/14 16:08:59 / 추천 0
변종원(웅파)//감사합니다 ㅠ 해결했습니다
널곰 / 2015/05/17 01:34:05 / 추천 0
전 여러 도메인 사용시 이렇게 합니다.
// SITE 상수 설정
switch($_SERVER['HTTP_HOST']) {
     case 'domain.com' :
     case 'www.domain.com' :
          define('SITE', 'domain2');
     case 'domain2.com; :
     case 'www.domain2.com' :
          define('SITE', 'domain2');
     default :  // localhost, 127.0.0.1 개발용
         define('SITE', 'default');
}

// 도메인에 따른 DB 기본 설정 ... database.php
$db['default']['hostname'] = 'localhost';
$db['default']['username'] = 'username';
$db['default']['password'] = 'password';
$db['default']['database'] = 'dbname';
$db['default']['dbdriver'] = 'mysql';
//  ..........   생략       ........
$db['default']['char_set'] = 'utf8';
$db['default']['dbcollat'] = 'utf8_general_ci';
//  ..........   생략   각 SITE 명의 DB 설정 들.........
$db['domain2']['hostname'] = 'localhost';
$db['domain2']['username'] = 'username3';
$db['domain2']['password'] = 'password3';
$db['domain2']['database'] = 'dbname3';
$db['domain2']['dbdriver'] = 'mysql';
$active_group=(defined('SITE') && array_key_exists(SITE, $db) ? SITE : 'default';