我创建了一个带有laravel的应用程序,我有一套环境,我想要一如既往地在网站上运行。设置来自start.php文件,我在其中声明了这样的环境:
$env = $app->detectEnvironment(array(
'local' => array('Mark-macbook.local'),
'development' => array('excelsior.servers.prgn.misp.co.uk'),
'production' => array('excelsior.servers.prgn.misp.co.uk'),
));
然后我在server.php所在的根目录中创建文件,并为每个环境创建具有正确数据库详细信息的文件,如下所示:
.env.local.php
<?php
return array(
'DATABASE_HOST' => 'localhost',
'DATABASE_NAME' => 'borough',
'DATABASE_USER' => 'root',
'DATABASE_PASSWORD' => 'root',
'UNIX_SOCKET' => '/Applications/MAMP/tmp/mysql/mysql.sock'
);
.env.development.php
<?php
return array(
'DATABASE_HOST' => 'localhost',
'DATABASE_NAME' => 'db-name',
'DATABASE_USER' => 'db-user',
'DATABASE_PASSWORD' => 'pass'
);
.env.production.php
等等
然后在app / config中的database.php文件中我有这个设置:
'connections' => array(
'mysql' => array(
'driver' => 'mysql',
'host' => $_ENV['DATABASE_HOST'],
'unix_socket' => $_ENV['UNIX_SOCKET'],
'database' => $_ENV['DATABASE_NAME'],
'username' => $_ENV['DATABASE_USER'],
'password' => $_ENV['DATABASE_PASSWORD'],
'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',
'prefix' => '',
),
),
所以这就是所有设置,因为我知道它通常有效,但当我运行php artisan serve
时,我收到此错误:
{"error":{"type":"ErrorException","message":"Undefined index: DATABASE_HOST","file":"\/Freelance\/Current Projects\/borough\/build\/borough-cc\/app\/config\/database.php","line":67}}
有谁知道为什么会发生这种情况以及我在这里做错了什么?
干杯
答案 0 :(得分:0)
从记忆中,因为我没有经常使用Laravel,所以你没有正确使用它。
基本上,数据库访问将在一种全局配置中查看配置键。此全局配置是config文件夹和环境配置中的配置文件组合的结果。
因此,您只需要在环境配置中重新声明(或简单声明)您的环境特定变量。
.env.local.php
<?php
return array(
'connections' => array(
'mysql' => array(
'host' => 'localhost',
'unix_socket' => '/Applications/MAMP/tmp/mysql/mysql.sock',
'database' => 'borough,
'username' => 'root,
'password' => 'root',
),
),
),
);
database.php中
'connections' => array(
'mysql' => array(
'driver' => 'mysql',
'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',
'prefix' => '',
),
),
我在你的例子中有点害怕你没有在两个配置中定义相同的键...基本上,你首先定义公共配置,然后你在环境特定文件中重新定义你需要的任何东西。