前面文章路由与控制器我们都了解了,现在了解一下
laravel
的config配置
配置项
laravel
的配置项是在根目录下的 /config
目录中,还有一个是根目录下的 .env
文件
这里就有个疑问了为啥要有2个地方用于写配置项呢?让我们打开
.env
来看看
第一行就是一个 APP_NAME
,我们再打开 config/app.php
我们也找到了这个 APP_NAME
, 不过是作为一个参数传给了 env()
函数,我们来了解下这个函数
- 它是用来获取 .env 文件中的配置的
- 它有2个参数
- 第一个参数就是配置项名
- 第二个参数就是默认值
'name' => env('APP_NAME', 'Laravel')
到这里这句代码的意思就很明显了,从.env
获取APP_NAME
的值,如果.env
中不存在APP_NAME
那就取默认值Laravel
在 config/database.php 文件中我们可看到数据库的配置
依然是一片熟悉的 env
函数,比如说数据库的 host 、port 、database 、username、password
但是还有一些并没有用 env
函数,比如说charset 、 prefix
那我们不禁迷惑了, 到底什么时候用 env
函数什么时候不用 env
函数呢?
在理解这个问题前咱还需再穿插一点 git 的小知识在项目根目录下我们可以看到有个 .gitignore 文件.
其中有一行写了 .env
,它的作用就是告诉 git
忽略 .env
文件,所以如果你去 github
上看别的 laravel
项目的时候你会发现并没有 .env
文件.
很显然需要保密的配置或者每个项目特有的或者每个环境不同的东西我们可以把它卸载 .env
文件里然后在 /config
目录下的配置文件中用 env()
函数获取数据库的配置就很明显属于这类。
并且在团队开发的时候每个人都有自己的本地开发环境还有测试环境生产环境,如果直接写死就需要每个团队成员在这些环境中设置成统一的账号密码,这样做很不安全并且非常麻烦,而那些不需要报名却需要一定统一的性的配置可以直接卸载
/config
目录下的配置文件里。
好了哪我们现在来简单改一下配置
配置 .env
文件
- 首先
APP_NAME
需要该成我们的项目名称,我就随便起名字叫study
了。 APP_URL
是需要该的,他就是项目的域名,我是在本地开发的http://study.laraveltest.com/
- DB_开头的这一堆配置也都要改成本地数据库。
/config
目录下的数据库的配置
laravel 5.4
以后默认使用 utf8mb4
字符集,utf8mb4
主要是用来支持 emoji
表情的,如果你的本地环境
的mysql
低于5.7.7
,为了防止在以后使用的过程中报如下错误
[IlluminateDatabaseQueryException]
SQLSTATE[42000]: Syntax error or access violation: 1071 Specified key was too long; max key length is 767 bytes (SQL: alter table users add unique users_email_unique(email))
[PDOException]
SQLSTATE[42000]: Syntax error or access violation: 1071 Specified key was too long; max key length is 767 bytes
需要找到 config/database.php
文件中的 mysql
修改 charset、collation为utf8
'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',
不过这样做的后果就是不能在数据库直接存emoji
表情了,如果说你就是想在数据库中存 emoji
表情,那还有一种方案,找到appProvidersAppServiceProvider.php
文件,
先 use Schema
use IlluminateSupportFacadesSchema;
在 boot 中添加如下代码
代码语言:javascript复制public function boot()
{
Schema::defaultStringLength(191);
}
如果使用 5.7
以上的 mysql 数据库
,还可以把 strict
改为 false
关闭严格模式,以防止报类似如下 only_full_group_by
的错误。
除了数据库还有两个需要改的打开 config/app.php
文件把 timezone
改为 PRC
,laravel
默认的时区是 UTC
中国的时区是 PRC
如果没有改的话,
那数据库存自动生成的时间会和我们的实际相差8个小时
然后把 locale
改为 zh-CN
这个就好理解了把语言改为中文。