首页 » Web技术 » Laravel » 正文

[Laravel 5 教程学习笔记] 六、环境与配置

前一节学习了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 基础视频教程学习笔记

本文共 9 个回复

  • 2016/04/22 11:54

    文章很好

  • pipi 2016/05/24 16:25

    你好,请问我在根目录下,为什么看不到env文件呢?

    • Specs 2016/05/25 19:50

      @ pipi 那你可以执行 mv .env.example .env 然后 php artisan key:generate

      • pipi 2016/05/25 20:52

        @ Specs :mrgreen: 其实是这样,我从 golaravel 这个网站 下载了 laravel 的一键安装包,这个安装包内已经生成了key,我现在是想看看下载下来的env的具体配置是什么,但是找不到对应的文件

        • Specs 2016/05/26 08:10

          @ pipi 默认是没有的,需要把 .example 那个复制过来

  • rochestor 2016/09/03 21:40

    楼主,我是刚刚入坑的小司机,看了你的笔记,真心赞,请问楼主看的国外的什么视频,能否给个链接,谢谢~

    • Specs 2016/09/05 20:41

      @ rochestor laracasts.com/series 有些免费的。我觉得这个网站的教程非常棒~

  • AChan 2016/09/27 10:52

    您好,我想问下,我自己在config目录下新建了windows_local和unix_local目录来区分不同环境读取不同配置,但是$environment = App::environment();这句代码读取的是windows_local 但是结果显示出来的却是默认的值比如说config('app.name');而我配置的值一直没显示,这个是什么原因 呢

发表评论