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 相关文章推荐
Smarty Foreach 使用说明
Mar 23 PHP
ajax实现无刷新分页(php)
Jul 18 PHP
Zend Studio (eclipse)使用速度优化方法
Mar 23 PHP
php入门学习知识点三 PHP上传
Jul 14 PHP
初步介绍PHP扩展开发经验分享
Sep 06 PHP
php获取通过http协议post提交过来xml数据及解析xml
Dec 16 PHP
解析:通过php socket并借助telnet实现简单的聊天程序
Jun 18 PHP
PHP版QQ互联OAuth示例代码分享
Jul 05 PHP
2款PHP无限级分类实例代码
Nov 11 PHP
thinkphp微信开发(消息加密解密)
Dec 02 PHP
学习php设计模式 php实现命令模式(command)
Dec 08 PHP
详解PHP的Yii框架的运行机制及其路由功能
Mar 17 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
Yii中创建自己的Widget实例
2016/01/05 PHP
javascript下给元素添加事件的方法与代码
2007/08/13 Javascript
40个有创意的jQuery图片和内容滑动及弹出插件收藏集之二
2011/12/31 Javascript
javascript中常用编程知识
2013/04/08 Javascript
jquery购物车实时结算特效实现思路
2013/09/23 Javascript
JavaScript基于ajax编辑信息用法实例
2015/07/15 Javascript
7个jQuery最佳实践
2016/01/12 Javascript
Javascript操作表单实例讲解(下)
2016/06/20 Javascript
JS简单测试循环运行时间的方法
2016/09/04 Javascript
[js高手之路]寄生组合式继承的优势详解
2017/08/28 Javascript
Mint UI 基于 Vue.js 移动端组件库
2017/11/07 Javascript
详解vue-cli之webpack3构建全面提速优化
2017/12/25 Javascript
vue.js实现的全选与全不选功能示例【基于elementui】
2018/12/03 Javascript
vue-router 按需加载 component: () => import() 报错的解决
2020/09/22 Javascript
OpenLayers加载缩放控件使用方法详解
2020/09/25 Javascript
[01:28]国服启动器接入蒸汽平台操作流程视频
2021/03/11 DOTA
Python3实现从文件中读取指定行的方法
2015/05/22 Python
win10下Python3.6安装、配置以及pip安装包教程
2017/10/01 Python
浅析Python 3 字符串中的 STR 和 Bytes 有什么区别
2018/10/14 Python
在Pycharm中项目解释器与环境变量的设置方法
2018/10/29 Python
Python对象中__del__方法起作用的条件详解
2018/11/01 Python
Django CSRF跨站请求伪造防护过程解析
2019/07/31 Python
python实现在一个画布上画多个子图
2020/01/19 Python
如何基于pythonnet调用halcon脚本
2020/01/20 Python
Python下划线5种含义代码实例解析
2020/07/10 Python
DRF使用simple JWT身份验证的实现
2021/01/14 Python
瑞士网球商店:Tennis-Point
2020/03/12 全球购物
财务管理专业毕业生求职信范文
2013/09/21 职场文书
送货司机岗位职责
2013/12/11 职场文书
培训演讲稿范文
2014/01/12 职场文书
前处理组长岗位职责
2014/03/01 职场文书
超市中秋节促销方案
2014/03/21 职场文书
大学毕业生求职自荐书
2014/06/05 职场文书
2014年幼儿园老师工作总结
2014/12/05 职场文书
听课评课活动心得体会
2016/01/15 职场文书
JavaWeb 入门篇:创建Web项目,Idea配置tomcat
2021/07/16 Java/Android