我想使用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}}
如何解决此问题?
答案 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
)
然后:
hosts
文件(在您的操作系统中)以将mysuperstore.local
重定向到127.0.0.1 http://mysuperstore.local
之类的网址,将.env.mysuperstore.php
加载到$_ENV
。在配置文件(放在app/config/
中的文件)中,请参阅$_ENV
。要查看$ _ENV的来源,请查看documentation topic about "Protecting Sensitive Configuration"。