介绍
Laravel框架中所有的配置文件
存储在config
目录中。每一个选项都记录在其中,因此很容易通过查看文件来熟悉你要使用的选项。
环境配置
通常来说,拥有基于应用运行环境的不同的配置文件是有帮助的。例如,你可能希望使用一个不同的本地缓冲驱动而不是在你的产品服务器上的那个驱动。
为了使这一目的容易实现,Laravel使用Vance Lucas的 DotEnv
PHP库。在一个全新的Laravel安装环境中,你的应用程序的根目录将包含一个.env.example
文件。如果你通过Composer安装Laravel,这个文件将自动重命名为.env
。否则的话,你应该自己重命名这个文件。
Tips:
你也可以创建一个.env.testing
文件。当运行PHP单元测试或者执行带有--env=testing
选项Artisan命令的时候,这个文件将覆盖.env
文件中的值。
检索环境配置
当你的应用程序收到一个请求时,这个文件中列出的所有变量将被加载到PHP超级全局变量 $_ENV
中。然而,你可能会使用 env
助手来从你的配置文件中检索来自这些变量的值。实际上,如果你检查一下Laravel配置文件,你会注意到有几个选项已经在使用这个助手了:
'debug' => env('APP_DEBUG',false),
传入函数 env
的第二个值是“缺省值”。如果对于一个键没有对应的变量值,将会使用这个缺省值。
你的.env
文件不应该提交到你的源代码版本中,因为每个使用你的应用程序的开发人员或服务器可能会包含一个完全不同的环境配置。
如果你正在一个团队中开发,你可能希望在你的应用中包含一个.env.example
文件,在样例配置文件中设置占位符,这样的话,团队中别的开发人员可以清楚地看出你的应用都需要哪些环境变量。
判定当前环境
当前应用环境通过.env
文件中的 APP_ENV
变量来判定。你可以在App
中通过方法 environment
获取这个值:
$environment = App::environment();
你也可以给environment
方法传递参数来检查是否当前环境匹配给定的值。如果匹配则返回 true
:
if ( App::environment('local') ){
//当前环境是本地的
}
if( App::environment('local', 'staging') ){
//当前环境是本地或者staging
}
获取配置参数的值
你在的应用中任何地方可能都可以通过使用全局助手函数config
轻松获取你的配置参数的值。这个值可以通过使用“.”语法来获得,其中包括文件名和你希望获取的选项。也可以指定一个默认的值并且如果配置选项不存在将会返回这个默认值:
$value = config( 'app.timezone' );
在运行时设置配置参数的值,传递给config
助手一个数组就可以了:
config( ['app.timezone' => 'America/Chicago'] );
配置缓冲
为了提升你的应用的响应速度性能,你应该使用Artisan命令config:cache
来将你的所有配置文件缓冲到一个单独的文件中。这将会为你的应用组合所有的配置选项到一个单独的能够被框架快速加载的文件中。
通常来说,在你部署产品的常规中应该运行命令 php artisan config:cache
。这个命令在本地开发环境中不应该运行,因为在你的应用开发中,配置选项需要频繁改动。
Tips
如果你在部署过程中运行了命令 config:cache
,你应该确保仅仅调用了来自配置文件中的函数env
。
维护模式
当你的应用处在维护模式时,对所有的进入你的应用的请求将显示一个游客视图。这将使你的应用正在更新或者正在维护时“不可用”这件事变得简单。在你的应用中的默认中间件栈中包含了维护模式的检测。如果应用处于维护模式,将会抛出一个带有状态码503的异常MaintenanceModeException
。
为了使维护模式生效,简单执行Artisan命令 down
即可:
php artisan down
你也可以给命令 down
提供选项 message
和 retry
。这个 值message
可以用来显示或者记录一条客户信息,值retry
则被设置为 Retry-After
HTTP头部的值:
php artisan down --message="Upgrading Database" --retry=60
关闭维护模式,可以使用命令 up
:
php artisan up
维护模式响应模板
对于维护模式默认的相应模板位于 resource/views/errors/503.blade.php
。你可以随意修改这个视图以满足你的应用的需要。
维护模式和队列
当你的应用处在维护模式时,将不会处理队列任务。一旦你的应用移出维护模式,这些任务将继续正常被处理。
维护模式的替换
因为维护模式需要你的应用花费若干时间宕机,可以考虑使用替换品Envoyer来完成用Laravel零宕机部署。
更新中…