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 相关文章推荐
无限级别菜单的实现
Oct 09 PHP
PHP 可阅读随机字符串代码
May 26 PHP
php设计模式 Strategy(策略模式)
Jun 26 PHP
PHP中的错误处理、异常处理机制分析
May 07 PHP
作为PHP程序员应该了解MongoDB的五件事
Jun 03 PHP
php字符编码转换之gb2312转为utf8
Oct 28 PHP
PHP缓存机制Output Control详解
Jul 14 PHP
PHP如何实现跨域
May 30 PHP
php组合排序简单实现方法
Oct 15 PHP
详解php伪造Referer请求反盗链资源
Jan 24 PHP
laravel 解决paginate查询多个字段报错的问题
Oct 22 PHP
解决php扩展安装不生效问题
Oct 25 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
可以在线执行PHP代码包装修正版
2008/03/15 PHP
php中根据某年第几天计算出日期年月日的代码
2011/02/24 PHP
如何用C语言编写PHP扩展的详解
2013/06/13 PHP
php加密解密函数authcode的用法详细解析
2013/10/28 PHP
CodeIgniter扩展核心类实例详解
2016/01/20 PHP
Date对象格式化函数代码
2010/07/17 Javascript
js动态生成指定行数的表格
2013/07/11 Javascript
js中Image对象以及对其预加载处理示例
2013/11/20 Javascript
js父窗口关闭时子窗口随之关闭完美解决方案
2014/04/29 Javascript
JS实现的通用表单验证插件完整实例
2015/08/20 Javascript
JavaScript字符串删除重复字符的方法
2015/12/25 Javascript
JS获取年月日时分秒的方法分析
2016/11/28 Javascript
js回调函数仿360开机
2019/12/26 Javascript
解决vue 给window添加和移除resize事件遇到的坑
2020/07/21 Javascript
[02:12]打造更好的电竞完美世界:完美盛典回顾篇
2018/12/19 DOTA
Django中处理出错页面的方法
2015/07/15 Python
Python利用带权重随机数解决抽奖和游戏爆装备问题
2016/06/16 Python
python安装PIL模块时Unable to find vcvarsall.bat错误的解决方法
2016/09/19 Python
Python实现正整数分解质因数操作示例
2018/08/01 Python
python遍历文件目录、批量处理同类文件
2019/08/31 Python
Python数据分析模块pandas用法详解
2019/09/04 Python
Python之Class&Object用法详解
2019/12/25 Python
Python如何在DataFrame增加数值
2020/02/14 Python
Tensorflow中的dropout的使用方法
2020/03/13 Python
CSS3贝塞尔曲线示例:创建链接悬停动画效果
2020/11/19 HTML / CSS
用HTML5中的Canvas结合公式绘制粒子运动的教程
2015/05/08 HTML / CSS
亚洲最大旅游体验平台:KKday
2017/10/21 全球购物
阿迪达斯墨西哥官方网站:adidas墨西哥
2017/11/03 全球购物
广州地球村科技数据库题目
2016/04/25 面试题
数控专业推荐信范文
2013/12/02 职场文书
经典英文广告词
2014/03/18 职场文书
中班下学期个人总结
2015/02/12 职场文书
2015年六一儿童节演讲稿
2015/03/19 职场文书
第一军规观后感
2015/06/12 职场文书
Jupyter Notebook 如何修改字体和大小以及更改字体样式
2021/06/03 Python
SpringAop日志找不到方法的处理
2021/06/21 Java/Android