Laravel 5+ .env环境配置文件详解


Posted in PHP onApril 06, 2020

在我们开发的时候,有时候我们希望不同的环境中有不同的配置参数,举例来说,你希望生产环境使用的缓存机制与本地环境不同。

要实现这个目的,Laravel使用了DotEnv这个PHP库。在Laraval的安装根目录下,我们会看到一个名为.env.example的文件,我们需要手动将其命名为.env(或拷贝一个副本并将其命名为.env)。

打开.env文件,可以看到一系列配置信息:

APP_NAME=Laravel        

APP_ENV=local        

APP_KEY=base64:qDt/OQzs9YbNTyfHC4xgG+YY87+LcxDkPrB2RW1NxyI=        

APP_DEBUG=true        

APP_URL=http://localhost        

   

LOG_CHANNEL=stack        

   

DB_CONNECTION=mysql        

DB_HOST=127.0.0.1        

DB_PORT=3306        

DB_DATABASE=      

DB_USERNAME=        

DB_PASSWORD=        

   

BROADCAST_DRIVER=log        

CACHE_DRIVER=file        

SESSION_DRIVER=file        

SESSION_LIFETIME=120        

QUEUE_DRIVER=sync        

   

REDIS_HOST=127.0.0.1        

REDIS_PASSWORD=null        

REDIS_PORT=6379        

   

MAIL_DRIVER=smtp        

MAIL_HOST=smtp.mailtrap.io        

MAIL_PORT=2525        

MAIL_USERNAME=null        

MAIL_PASSWORD=null        

MAIL_ENCRYPTION=null        

   

PUSHER_APP_ID=        

PUSHER_APP_KEY=        

PUSHER_APP_SECRET=        

PUSHER_APP_CLUSTER=mt1        

   

MIX_PUSHER_APP_KEY="${PUSHER_APP_KEY}"        

MIX_PUSHER_APP_CLUSTER="${PUSHER_APP_CLUSTER}"

可以看到,文件中列出了很多配置,包含了缓存,数据库,开发环境,队列等等。

因此,.env文件不应该被加入到版本控制中,也就是说每一个开发环境下的.env文件都是独立的。我们可以根据我们开发环境的不同,配置出不同的.env文件,从而实现不同的开发环境拥有不同的配置参数。

那么基本概念已经介绍完了,接下来我们来分解一下.env文件中比较常用的几个配置参数。

首先看到

APP_NAME=Laravel      

APP_ENV=local      

APP_KEY=base64:qDt/OQzs9YbNTyfHC4xgG+YY87+LcxDkPrB2RW1NxyI=      

APP_DEBUG=true      

APP_URL=http://localhost

其中APP_NAME是我们的项目名称,这里我们可以根据需要自行修改。

注意:如果你输入的字符串中含有空格,请将你的字符串放在""中,例如APP_NAME="Eagle Luo"

APP_ENV是我们的开发环境,在生产环境下,我们可以将其改为production。

APP_KEY是Laravel生成的一个32位的字符串,用于加密session等数据。

这个钥匙很重要,引用官方文档的话来说,

If the application key is not set, your user sessions and other encrypted data will not be secure!

如果我们使用了compoer安装Laravel,那么这个秘钥会自动帮我们生成,否则我们需要运行

$ php artisan key:generate

来生成这个秘钥。

APP_DEBUG是我们是否打开DEBUG信息的开关,设置为true的时候,代码出现错误将会显示相应的Stack trace,而如果设置为false将隐藏错误信息。

APP_URL则是我们的项目地址。

好了,再来我们看到

DB_CONNECTION=mysql

DB_HOST=127.0.0.1

DB_PORT=3306

DB_DATABASE=

DB_USERNAME=

DB_PASSWORD=

DB_CONNECTION指的是我们的数据库连接种类,这个值在config/database.php中connections数组中被定义:

'connections' => [   
  
    'sqlite' => [   
      'driver' => 'sqlite',   
      'database' => env('DB_DATABASE', database_path('database.sqlite')),   
      'prefix' => '',   
    ],   
  
    'mysql' => [   
      'driver' => 'mysql',   
      'host' => env('DB_HOST', '127.0.0.1'),   
      'port' => env('DB_PORT', '3306'),   
      'database' => env('DB_DATABASE', 'forge'),   
      'username' => env('DB_USERNAME', 'forge'),   
      'password' => env('DB_PASSWORD', ''),   
      'unix_socket' => env('DB_SOCKET', ''),   
      'charset' => 'utf8mb4',   
      'collation' => 'utf8mb4_unicode_ci',   
      'prefix' => '',   
      'strict' => true,   
      'engine' => null,   
    ],   
  
    'pgsql' => [   
      'driver' => 'pgsql',   
      'host' => env('DB_HOST', '127.0.0.1'),   
      'port' => env('DB_PORT', '5432'),   
      'database' => env('DB_DATABASE', 'forge'),   
      'username' => env('DB_USERNAME', 'forge'),   
      'password' => env('DB_PASSWORD', ''),   
      'charset' => 'utf8',   
      'prefix' => '',   
      'schema' => 'public',   
      'sslmode' => 'prefer',   
    ],   
  
    'sqlsrv' => [   
      'driver' => 'sqlsrv',   
      'host' => env('DB_HOST', 'localhost'),   
      'port' => env('DB_PORT', '1433'),   
      'database' => env('DB_DATABASE', 'forge'),   
      'username' => env('DB_USERNAME', 'forge'),   
      'password' => env('DB_PASSWORD', ''),   
      'charset' => 'utf8',   
      'prefix' => '',   
    ],   
  ],

我们可以根据需要修改这个数组,例如数据库的charset,collation等信息。

DB_HOST和DB_PORT就不用多说,分别指代了数据库连接的ip和端口号。

DB_DATABASE指的是我们连接上数据库后默认使用的数据库名称。

DB_USERNAME和DB_PASSWORD指的自然是我们连接数据库所使用的用户名和密码。

在Homestead开发环境下,默认的MySQL用户名为homestead,密码为secret。

好了,本文主要讲解了Laravel 5+ .env环境配置文件的各项含义与使用方法,更多源于Laravel框架的使用技巧请查看下面的相关链接

PHP 相关文章推荐
在MongoDB中模拟Auto Increment的php代码
Mar 06 PHP
PHP数组的交集array_intersect(),array_intersect_assoc(),array_inter_key()函数的小问题
May 29 PHP
php后门URL的防范
Nov 12 PHP
关于URL最大长度限制的相关资料查证
Dec 23 PHP
php安装php_rar扩展实现rar文件读取和解压的方法
Nov 17 PHP
laravel实现分页样式替换示例代码(增加首、尾页)
Sep 22 PHP
PHP基于phpqrcode类生成二维码的方法详解
Mar 14 PHP
为何说PHP引用是个坑,要慎用
Apr 02 PHP
PHP单元测试框架PHPUnit用法详解
Jan 23 PHP
浅谈PHPANALYSIS提取关键字
Mar 08 PHP
PHP文件后缀不强制为.php方法
Mar 31 PHP
thinkPHP5框架路由常用知识点汇总
Sep 15 PHP
Laravel5.3+框架定义API路径取消CSRF保护方法详解
Apr 06 #PHP
Laravel框架使用技巧之使用url()全局函数返回前一个页面的地址方法详解
Apr 06 #PHP
使用git迁移Laravel项目至新开发环境的步骤详解
Apr 06 #PHP
Laravel框架数据库迁移操作实例详解
Apr 06 #PHP
Laravel框架中队列和工作(Queues、Jobs)操作实例详解
Apr 06 #PHP
Laravel实现批量更新多条数据
Apr 06 #PHP
PHP正则之正向预查与反向预查讲解与实例
Apr 06 #PHP
You might like
解决dede生成静态页和动态页转换的一些问题,及火车采集入库生成动态的办法
2007/03/29 PHP
用php随机生成福彩双色球号码的2种方法
2013/02/04 PHP
Apache实现Web Server负载均衡详解(不考虑Session版)
2013/07/05 PHP
PHP把空格、换行符、中文逗号等替换成英文逗号的正则表达式
2014/05/04 PHP
必须收藏的23个php实用代码片段
2016/02/02 PHP
php中引用符号(&)的使用详细介绍
2016/12/06 PHP
jquery trim() 功能源代码
2011/02/14 Javascript
js 自制滚动条的小例子
2013/03/16 Javascript
JS检测图片大小的实例
2013/08/21 Javascript
Js实现滚动变色的文字效果
2014/06/16 Javascript
AngularJS基础 ng-init 指令简单示例
2016/08/02 Javascript
用js实现before和after伪类的样式修改的示例代码
2017/09/07 Javascript
小程序从手动埋点到自动埋点的实现方法
2019/01/24 Javascript
pm2发布node配置文件ecosystem.json详解
2019/05/15 Javascript
jquery+ajax实现上传图片并显示上传进度功能【附php后台接收】
2019/06/06 jQuery
python通过自定义isnumber函数判断字符串是否为数字的方法
2015/04/23 Python
一篇文章快速了解Python的GIL
2018/01/12 Python
numpy实现合并多维矩阵、list的扩展方法
2018/05/08 Python
Python父目录、子目录的相互调用方法
2019/02/16 Python
windows下python安装pip方法详解
2020/02/10 Python
一些Solaris面试题
2015/12/22 面试题
中学劳技课教师的自我评价
2014/02/05 职场文书
大学运动会入场词
2014/02/22 职场文书
小学生感恩演讲稿
2014/04/25 职场文书
学习经验演讲稿
2014/05/10 职场文书
禁烟标语大全
2014/06/11 职场文书
改进作风怎么办发言材料
2014/08/17 职场文书
关于青春的演讲稿500字
2014/08/22 职场文书
2014学习十八届四中全会精神思想汇报范文
2014/10/23 职场文书
会计工作态度自我评价
2015/03/06 职场文书
好员工观后感
2015/06/17 职场文书
2015暑期爱心支教策划书
2015/07/14 职场文书
新闻稿格式范文
2015/07/18 职场文书
给校长的建议书作文500字
2015/09/14 职场文书
司法廉洁教育心得体会
2016/01/20 职场文书
Apache压力测试工具的安装使用
2021/03/31 Servers