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 相关文章推荐
PHP的一个完整SMTP类(解决邮件服务器需要验证时的问题)
Oct 09 PHP
eWebEditor v3.8 商业完整版 (PHP)
Dec 06 PHP
php的access操作类
Apr 09 PHP
PHP在特殊字符前加斜杠的实现代码
Jul 17 PHP
php计算十二星座的函数代码
Aug 21 PHP
3款值得推荐的微信开发开源框架
Oct 28 PHP
PHP超牛逼无限极分类生成树方法
May 11 PHP
php生成gif动画的方法
Nov 05 PHP
php自定义函数转换html标签示例
Sep 29 PHP
浅析php-fpm静态和动态执行方式的比较
Nov 09 PHP
PHP新特性详解之命名空间、性状与生成器
Jul 18 PHP
PHP Trait功能与用法实例分析
Jun 03 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&&mysql)四
2006/10/09 PHP
php htmlentities和htmlspecialchars 的区别
2008/08/18 PHP
php判断是否为json格式的方法
2014/03/04 PHP
PHP 实现代码复用的一个方法 traits新特性
2015/02/22 PHP
浅谈PHP中关于foreach使用引用变量的坑
2016/11/14 PHP
PHP中检查isset()和!empty()函数的必要性
2019/02/13 PHP
PHP大文件切割上传并带进度条功能示例
2019/07/01 PHP
Js动态创建div
2008/09/25 Javascript
extjs grid取到数据而不显示的解决
2008/12/29 Javascript
IE8下关于querySelectorAll()的问题
2010/05/13 Javascript
ajax请求乱码的解决方法(中文乱码)
2014/04/10 Javascript
Bootstrap3.0建站教程(一)之bootstrap表单元素排版
2016/06/01 Javascript
实例浅析js的this
2016/12/11 Javascript
angularJS 指令封装回到顶部示例详解
2017/01/22 Javascript
详解win7 cmd执行vue不是内部命令的解决方法
2017/07/27 Javascript
基于Vue2的独立构建与运行时构建的差别(详解)
2017/12/06 Javascript
vue-video-player 通过自定义按钮组件实现全屏切换效果【推荐】
2018/08/29 Javascript
JavaScript格式化json和xml的方法示例
2019/01/22 Javascript
JavaScript中的类型检查
2020/02/03 Javascript
Python中列表、字典、元组、集合数据结构整理
2014/11/20 Python
Python进行数据科学工作的简单入门教程
2015/04/01 Python
浅谈Python数据类型之间的转换
2016/06/08 Python
Python使用中文正则表达式匹配指定中文字符串的方法示例
2017/01/20 Python
python网络爬虫之如何伪装逃过反爬虫程序的方法
2017/11/23 Python
Python数据结构与算法之常见的分配排序法示例【桶排序与基数排序】
2017/12/15 Python
python 获取一个值在某个区间的指定倍数的值方法
2018/11/12 Python
python ddt数据驱动最简实例代码
2019/02/22 Python
Python urllib库如何添加headers过程解析
2020/10/05 Python
详解css position 5种不同的值的用法
2019/07/30 HTML / CSS
HTML5仿微信聊天界面、微信朋友圈实例代码
2018/01/29 HTML / CSS
博士学位自我鉴定范文
2013/12/26 职场文书
应届生如何写自荐信
2014/01/05 职场文书
小学中队活动总结
2015/05/11 职场文书
党员转正申请报告
2015/05/15 职场文书
SqlServer 垂直分表(减少程序改动)
2021/04/16 SQL Server
原生JS封装vue Tab切换效果
2021/04/28 Vue.js