今天谈到的是Laravel5 Dev开发版的程序环境配置,截止发稿日,官方还未推出正式版。
Laravel 4 是优先读取APP环境名目录下的配置php文件,然后覆盖production默认环境配置;而Laravel 5却所有改变,改变后更佳方便维护不同程序环境了。我先把4和5的目录结构截图发出来
上图是Laravel 4 的目录,在app\config\目录下还有一个本地local目录,local目录是存放的本地环境配置,比如key、本地数据库链接帐号信息等等
上图是Laravel 5 的目录结构,在\config目录下是不再有local这样的环境目录名了。 而在根目录了多了一个.env文件
看完两张图,是不是有点不明白Laravel 5 是如何完成自适应环境配置的呢?
关键点就2个地方,.env这个文件就是存放当前环境配置数据,这些数据框架会通过env($key, $default_value)这个函数来抓取到。
打开/config/database.php文件,看到env这些是不是就明白了!TL;DR 代码如下
'mysql' => [ 'driver' => 'mysql', 'host' => env('DB_HOST', 'localhost'), 'database' => env('DB_DATABASE', 'your_db_name'), 'username' => env('DB_USERNAME', 'your_db_username'), 'password' => env('DB_PASSWORD', 'your_db_password'), 'charset' => env('DB_CHARSET','utf8'), 'collation' => env('DB_COLLATION','utf8_unicode_ci'), 'prefix' => env('DB_PREFIX', 'your_table_prefix'), 'strict' => false, ],而对于Laravel 5,这个.env就非常重要了,只需要把你想配置不同环境数据存放到.env文件中,以后再config目录的配置文件,就可以随时读取到了。不用关心像Laravel 4一样可能吧开发环境或者测试环境的配置目录文件都传到生产环节的服务器上了。目录文件少了,心情就更好了。
用于生产环境时,只需把.env写好,上传到根目录即可。