Codeigniter环境设置

Zoh*_*aib 8 php development-environment codeigniter

Codeigniter开发环境没有设置.我总是在index.php中使用这段代码.但我不明白为什么我在使用localhost时将"生产"作为输出.

switch(dirname(__FILE__)){
 case "H:\wamp\www\sitedirectory":
    define('ENVIRONMENT', 'development');
 break;
 default:
    define('ENVIRONMENT', 'production');
 break;
 }

  echo ENVIRONMENT ;   // output is "production" while i am on localhost
  echo dirname(__FILE__) ;  // output is "H:\wamp\www\sitedirectory"
Run Code Online (Sandbox Code Playgroud)

bmo*_*ate 21

真奇怪.它对我来说完全一样.你能尝试这样的吗?

switch($_SERVER["HTTP_HOST"]){
 case "localhost":
    define('ENVIRONMENT', 'development');
 break;
 default:
    define('ENVIRONMENT', 'production');
 break;
 }

 echo ENVIRONMENT ;   // output development
Run Code Online (Sandbox Code Playgroud)


Rod*_*roz 6

为了根据服务器的 IP 动态设置环境,下面我使用正则表达式来检查本地 IP,例如 127.0.* 和 10.0.*。

在您项目的根目录查找index.php并替换:

define('ENVIRONMENT', isset($_SERVER['CI_ENV']) ? $_SERVER['CI_ENV'] : 'development');
Run Code Online (Sandbox Code Playgroud)

和:

$server_ip = getHostByName(getHostName());

if (preg_match("/^(127\.0\.|10\.0\.).+/i", $server_ip)) {
    define("ENVIRONMENT", "development");
    define("BASEURL", "http://localhost:8000/");
} else {
    define("ENVIRONMENT", "production");
    define("BASEURL", "https://domain.com/");
}
Run Code Online (Sandbox Code Playgroud)

确保BASEURL用您自己的值替换并application/config/config.php添加:

$config['base_url'] = BASEURL;
Run Code Online (Sandbox Code Playgroud)

为了进一步改进application/config/database.php在数据库设置之前添加$db['default'] = array(

if(ENVIRONMENT !== 'production') {
    $db = [
            'username' => '',
            'password' => '',
            'database' => '',
            'hostname' => '127.0.0.1'
    ];
} else {
    $db = [
            'username' => '',
            'password' => '',
            'database' => '',
            'hostname' => ''
    ];
}
Run Code Online (Sandbox Code Playgroud)