当前位置:首页 > CMS教程 > 其它CMS > 列表

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

发布:smiling 来源: PHP粉丝网  添加日期:2022-02-25 11:33:49 浏览: 评论:0 

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

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

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

  1. APP_NAME=Laravel         
  2.  
  3. APP_ENV=local         
  4.  
  5. APP_KEY=base64:qDt/OQzs9YbNTyfHC4xgG+YY87+LcxDkPrB2RW1NxyI=         
  6.  
  7. APP_DEBUG=true         
  8.  
  9. APP_URL=http://localhost  
  10.  
  11. LOG_CHANNEL=stack
  12.  
  13. DB_CONNECTION=mysql         
  14.  
  15. DB_HOST=127.0.0.1         
  16.  
  17. DB_PORT=3306         
  18.  
  19. DB_DATABASE=       
  20.  
  21. DB_USERNAME=         
  22.  
  23. DB_PASSWORD=         
  24.  
  25. BROADCAST_DRIVER=log         
  26.  
  27. CACHE_DRIVER=file         
  28.  
  29. SESSION_DRIVER=file         
  30.  
  31. SESSION_LIFETIME=120         
  32.  
  33. QUEUE_DRIVER=sync         
  34.  
  35. REDIS_HOST=127.0.0.1         
  36.  
  37. REDIS_PASSWORD=null         
  38.  
  39. REDIS_PORT=6379         
  40.  
  41. MAIL_DRIVER=smtp         
  42.  
  43. MAIL_HOST=smtp.mailtrap.io         
  44.  
  45. MAIL_PORT=2525         
  46.  
  47. MAIL_USERNAME=null         
  48.  
  49. MAIL_PASSWORD=null         
  50.  
  51. MAIL_ENCRYPTION=null         
  52.  
  53. PUSHER_APP_ID=         
  54.  
  55. PUSHER_APP_KEY=         
  56.  
  57. PUSHER_APP_SECRET=         
  58.  
  59. PUSHER_APP_CLUSTER=mt1         
  60.  
  61. MIX_PUSHER_APP_KEY="${PUSHER_APP_KEY}"         
  62.  
  63. MIX_PUSHER_APP_CLUSTER="${PUSHER_APP_CLUSTER}" 

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

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

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

首先看到

  1. APP_NAME=Laravel       
  2.  
  3. APP_ENV=local       
  4.  
  5. APP_KEY=base64:qDt/OQzs9YbNTyfHC4xgG+YY87+LcxDkPrB2RW1NxyI=       
  6.  
  7. APP_DEBUG=true       
  8.  
  9. 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则是我们的项目地址。

好了,再来我们看到

  1. DB_CONNECTION=mysql 
  2.  
  3. DB_HOST=127.0.0.1 
  4.  
  5. DB_PORT=3306 
  6.  
  7. DB_DATABASE= 
  8.  
  9. DB_USERNAME= 
  10.  
  11. DB_PASSWORD= 

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

  1. 'connections' => [    
  2.  
  3.   'sqlite' => [    
  4.     'driver' => 'sqlite',    
  5.     'database' => env('DB_DATABASE', database_path('database.sqlite')),    
  6.     'prefix' => '',    
  7.   ],    
  8.  
  9.   'mysql' => [    
  10.     'driver' => 'mysql',    
  11.     'host' => env('DB_HOST''127.0.0.1'),    
  12.     'port' => env('DB_PORT''3306'),    
  13.     'database' => env('DB_DATABASE''forge'),    
  14.     'username' => env('DB_USERNAME''forge'),    
  15.     'password' => env('DB_PASSWORD'''),    
  16.     'unix_socket' => env('DB_SOCKET'''),    
  17.     'charset' => 'utf8mb4',    
  18.     'collation' => 'utf8mb4_unicode_ci',    
  19.     'prefix' => '',    
  20.     'strict' => true,    
  21.     'engine' => null,    
  22.   ],    
  23.  
  24.   'pgsql' => [    
  25.     'driver' => 'pgsql',    
  26.     'host' => env('DB_HOST''127.0.0.1'),    
  27.     'port' => env('DB_PORT''5432'),    
  28.     'database' => env('DB_DATABASE''forge'),    
  29.     'username' => env('DB_USERNAME''forge'),    
  30.     'password' => env('DB_PASSWORD'''),    
  31.     'charset' => 'utf8',    
  32.     'prefix' => '',    
  33.     'schema' => 'public',    
  34.     'sslmode' => 'prefer',    
  35.   ],    
  36.  
  37.   'sqlsrv' => [    
  38.     'driver' => 'sqlsrv',    
  39.     'host' => env('DB_HOST''localhost'),    
  40.     'port' => env('DB_PORT''1433'),    
  41.     'database' => env('DB_DATABASE''forge'),    
  42.     'username' => env('DB_USERNAME''forge'),    
  43.     'password' => env('DB_PASSWORD'''),    
  44.     'charset' => 'utf8',    
  45.     'prefix' => '',    
  46.   ],    
  47. ], 

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

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

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

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

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

Tags: Laravel5+ .env环境配置

分享到: