前一节学习了Laravel Blade模版,这一节学习Laravel 5中的环境与配置(Environments and Configuration)。
查看配置文件
Laravel 5 安装根目录下 .env 文件是配置文件。打开 config/database.php 可以看到,它返回一个PHP数组,该配置文件提供了各种数据库可能用到的配置。connections
里包含了数据库配置。修改'default' => 'mysql',
参数可以选择需要使用的数据库。
'mysql' => [ 'driver' => 'mysql', 'host' => env('DB_HOST', 'localhost'), 'database' => env('DB_DATABASE', 'forge'), 'username' => env('DB_USERNAME', 'forge'), 'password' => env('DB_PASSWORD', ''), 'charset' => 'utf8', 'collation' => 'utf8_unicode_ci', 'prefix' => '', 'strict' => false, ],
上面是默认的MySQL配置项,'host' => env('DB_HOST', 'localhost'),
中env()
方法就是读取.env文件中的配置项,它的第二个参数是默认值。当然也可以通过'password' => 'password',
直接配置,但是如果我们把项目存放到GitHub上时,这么做显然是不安全的。可以通过读取.env配置文件中的配置,然后把.env配置文件设置为不提交来解决,这也是通过.env配置文件来配置的一个好处。
打开项目根目录下的.gitignore文件,可以看到.env默认是不会被提交的。
/vendor /node_modules .env
读取环境配置
在Application
实例中,可以通过environment()
方法来读取目前应用程序的环境配置:
$environment = $app->environment();
你也可以传递参数至 environment()
方法中,来确认目前的环境是否与参数相符合:
if ($app->environment('local')) { // The environment is local } if ($app->environment('local', 'staging')) { // The environment is either local OR staging... }
也能通过 App
facade 或者辅助方法 app()
取得应用程序实例:
$environment = app()->environment(); $environment = App::environment();
配置MySQL
打开.env文件,修改MySQL相关配置项:
DB_HOST=localhost DB_DATABASE=laravel DB_USERNAME=root DB_PASSWORD=
之后在使用phpmyadmin或者Navicat等工具链接数据库,然后创建一个名为laravel
的数据库:
mysql -u root CREATE DATABASE laravel
维护模式
当你的应用程序处于维护模式时,所有的路由都会指向一个自定的视图。当你要更新或维护网站时,「关闭」整个网站是很简单的。如果应用程序处于维护模式,HttpException
会抛出 503 的状态码。
启用维护模式,只需要执行 Artisan 命令 down
:
php artisan down
关闭维护模式,请使用 Artisan 命令 up
:
php artisan up
维护模式响应的默认模板放在 resources/views/errors/503.blade.php
。
本节完。下一节学习Laravel 5的 Migrations 。
该篇属于专题:《Laravel 5 基础视频教程学习笔记》
好 2016/04/22 11:54
文章很好
pipi 2016/05/24 16:25
你好,请问我在根目录下,为什么看不到env文件呢?
Specs 2016/05/25 19:50
@ 那你可以执行 mv .env.example .env 然后 php artisan key:generate
pipi 2016/05/25 20:52
@ 其实是这样,我从 golaravel 这个网站 下载了 laravel 的一键安装包,这个安装包内已经生成了key,我现在是想看看下载下来的env的具体配置是什么,但是找不到对应的文件
Specs 2016/05/26 08:10
@ 默认是没有的,需要把 .example 那个复制过来
rochestor 2016/09/03 21:40
楼主,我是刚刚入坑的小司机,看了你的笔记,真心赞,请问楼主看的国外的什么视频,能否给个链接,谢谢~
Specs 2016/09/05 20:41
@ laracasts.com/series 有些免费的。我觉得这个网站的教程非常棒~
AChan 2016/09/27 10:52
您好,我想问下,我自己在config目录下新建了windows_local和unix_local目录来区分不同环境读取不同配置,但是$environment = App::environment();这句代码读取的是windows_local 但是结果显示出来的却是默认的值比如说config('app.name');而我配置的值一直没显示,这个是什么原因 呢
Specs 2016/09/30 08:58
@ 没太看明白呢。