使用$ _ENV的Laravel 4数据库配置

时间:2014-05-27 06:52:36

标签: php mysql arrays laravel-4

我想使用Laravel Environment作为我的数据库凭证,我这样做了:

bootstrap\start.php内:

  

$ env = $ app-> detectEnvironment(array(

     

'local'=>阵列( 'My_PC'),

     

'production'=>阵列( 'server.example.com')

     

));

.env.local.php所在的同一目录上创建serve.php,并在此代码中

  

返回数组(

'DATABASE_NAME' => 'laravel_db',
'DATABASE_USER' => 'root',
'DATABASE_PASSWORD' => '1234' 
     

);

app\config内部创建了一个包含此代码的local\app.php文件:

  

返回数组(

     

'debug'=>真,

     

);

并在app\config\database.php内为我的安全mysql连接做了:

'mysql' => array(
            'driver'    => 'mysql',
            'host'      => 'localhost',
            'database'  => $_ENV['DATABASE_NAME'],
            'username'  => $_ENV['DATABASE_USER'],
            'password'  => $_ENV['DATABASE_PASSWORD'],
            'charset'   => 'utf8',
            'collation' => 'utf8_unicode_ci',
            'prefix'    => '',
        ),

但我在CLI上收到错误:

{"error":{"type":"ErrorException","message":"Undefined index: DATABASE_NAME","file":"c:\\xampp\\htdocs\\Larave_project\\app\\config\\database.php","line":58}}

如何解决此问题?

2 个答案:

答案 0 :(得分:2)

基于主机名的env检测解决方案仅适用于Unix类型系统。 它不能在Windows上工作。

答案 1 :(得分:0)

在Laravel 4.2中,您可以通过这种方式检测环境:

$env = $app->detectEnvironment(function() {
    if ($_SERVER['SERVER_NAME'] == "127.0.0.1") {
            $domain = $_SERVER['HTTP_HOST'];

            if (strpos($domain, 'localhost') !== FALSE || strpos($domain, "127.0.0.1") !== FALSE) {
                die("Configure your local `hosts` file and go to address: http://{storeName}.local");
            }

        $len = strpos($domain, ".local");

        if ($len !== FALSE) {
            // will load .env.*.php
            $len = strpos($domain, ".local");
            $env = substr($domain, 0, $len);

            return $env;
        }
    }

    // will load .env.php
    return 'production';
});

(这是bootstrap/start.php

然后:

  1. 设置hosts文件(在您的操作系统中)以将mysuperstore.local重定向到127.0.0.1
  2. 转到http://mysuperstore.local之类的网址,将.env.mysuperstore.php加载到$_ENV
  3. 在配置文件(放在app/config/中的文件)中,请参阅$_ENV。要查看$ _ENV的来源,请查看documentation topic about "Protecting Sensitive Configuration"