【发布时间】:2015-05-07 01:01:36
【问题描述】:
我有两个数据库配置,一个用于生产,一个用于开发:
// app/config/database.php
'connections' => array(
'mysql' => array(
'driver' => 'mysql',
'host' => $_SERVER['RDS_HOSTNAME'],
'database' => $_SERVER['RDS_DB_NAME'],
'username' => $_SERVER['RDS_USERNAME'],
'password' => $_SERVER['RDS_PASSWORD'],
'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',
'prefix' => '',
)
)
// app/config/development/database.php
'connections' => array(
'mysql' => array(
'driver' => 'mysql',
'host' => $_SERVER['MYSQL_PORT_3306_TCP_ADDR'],
'database' => $_SERVER['MYSQL_ENV_MYSQL_DATABASE'],
'username' => $_SERVER['MYSQL_ENV_MYSQL_USER'],
'password' => $_SERVER['MYSQL_ENV_MYSQL_PASSWORD'],
'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',
'prefix' => '',
)
)
相关数据库环境变量存在(以MYSQL_开头的),运行迁移命令时:
php artisan migrate --env=development
以下异常被抛出:
{
"error":{
"type":"ErrorException",
"message":"Undefined index: RDS_HOSTNAME",
"file":"/var/www/app/config/database.php",
"line":50
}
}
当我什至不想使用生产配置时,为什么 Laravel 会关心我的生产配置中的环境变量是否不存在?我该如何解决这个问题?
【问题讨论】:
-
可能是因为它是由 Laravel 处理的 PHP 警告,它将警告视为错误。
-
App::environment();输出“发展”?
-
是的,但是当我指定开发环境时,为什么 Laravel 甚至会执行生产配置?有没有办法让 Laravel 忽略这样的警告?
-
@Th3Alchemist 是的,将
die(var_dump(App::environment()));放在文件顶部会导致它打印development。 -
你运行什么 Laravel 版本?你能检查你的/bootstrap/start.php(4.2)并检查你的主机名是否注册为开发环境吗?
标签: php laravel migrate laravel-artisan