Introduction
All of the configuration files for the Laravel framework are stored in the app/config
directory. Each option in every file is documented, so feel free to look through the files and get familiar with the options available to you.
Sometimes you may need to access configuration values at run-time. You may do so using the Config
class:
Accessing A Configuration Value
Config::get('app.timezone');
You may also specify a default value to return if the configuration option does not exist:
$timezone = Config::get('app.timezone', 'UTC');
Setting A Configuration Value
Notice that "dot" style syntax may be used to access values in the various files. You may also set configuration values at run-time:
Config::set('database.default', 'sqlite');
Configuration values that are set at run-time are only set for the current request, and will not be carried over to subsequent requests.
Environment Configuration
It is often helpful to have different configuration values based on the environment the application is running in. For example, you may wish to use a different cache driver on your local development machine than on the production server. It is easy to accomplish this using environment based configuration.
Simply create a folder within the config
directory that matches your environment name, such as local
. Next, create the configuration files you wish to override and specify the options for that environment. For example, to override the cache driver for the local environment, you would create a cache.php
file in app/config/local
with the following content:
<?php return array( 'driver' => 'file', );
Note: Do not use 'testing' as an environment name. This is reserved for unit testing.
Notice that you do not have to specify every option that is in the base configuration file, but only the options you wish to override. The environment configuration files will "cascade" over the base files.
Next, we need to instruct(指导;通知;命令;教授) the framework how to determine which environment it is running in. The default environment is always production
. However, you may setup other environments within the bootstrap/start.php
file at the root of your installation. In this file you will find an $app->detectEnvironment
call. The array passed to this method is used to determine the current environment. You may add other environments and machine names to the array as needed.
<?php $env = $app->detectEnvironment(array( 'local' => array('your-machine-name'), ));
In this example, 'local' is the name of the environment and 'your-machine-name' is the hostname of your server. On Linux and Mac, you may determine your hostname using the hostname
terminal command.
If you need more flexible environment detection, you may pass a Closure
to the detectEnvironment
method, allowing you to implement environment detection however you wish:
$env = $app->detectEnvironment(function()
{
return $_SERVER['MY_LARAVEL_ENV'];
});
Accessing The Current Application Environment
You may access the current application environment via the environment
method:
$environment = App::environment();
You may also pass arguments to the environment
method to check if the environment matches a given value:
if (App::environment('local'))
{
// The environment is local
} if (App::environment('local', 'staging'))
{
// The environment is either local OR staging...
}
Provider Configuration
When using environment configuration, you may want to "append" environment service providers to your primary app
configuration file. However, if you try this, you will notice the environment app
providers are overriding the providers in your primary app
configuration file. To force the providers to be appended, use the append_config
helper method in your environment app
configuration file:
'providers' => append_config(array(
'LocalOnlyServiceProvider',
))
Protecting Sensitive Configuration
For "real" applications, it is advisable to keep all of your sensitive configuration out of your configuration files. Things such as database passwords, Stripe API keys, and encryption keys should be kept out of your configuration files whenever possible. So, where should we place them? Thankfully, Laravel provides a very simple solution to protecting these types of configuration items using "dot" files.
First, configure your application to recognize your machine as being in the local
environment. Next, create a .env.local.php
file within the root of your project, which is usually the same directory that contains your composer.json
file. The .env.local.php
should return an array of key-value pairs, much like a typical Laravel configuration file:
<?php return array( 'TEST_STRIPE_KEY' => 'super-secret-sauce', );
All of the key-value pairs returned by this file will automatically be available via the $_ENV
and $_SERVER
PHP "superglobals". You may now reference these globals from within your configuration files:
'key' => $_ENV['TEST_STRIPE_KEY']
Be sure to add the .env.local.php
file to your .gitignore
file. This will allow other developers on your team to create their own local environment configuration, as well as hide your sensitive configuration items from source control.
Now, on your production server, create a .env.php
file in your project root that contains the corresponding values for your production environment. Like the .env.local.php
file, the production .env.php
file should never be included in source control.
Note: You may create a file for each environment supported by your application. For example, the
development
environment will load the.env.development.php
file if it exists. However, theproduction
environment always uses the.env.php
file.
Maintenance Mode
When your application is in maintenance mode, a custom view will be displayed for all routes into your application. This makes it easy to "disable" your application while it is updating or when you are performing maintenance. A call to the App::down
method is already present in your app/start/global.php
file. The response from this method will be sent to users when your application is in maintenance mode.
To enable maintenance mode, simply execute the down
Artisan command:
php artisan down
To disable maintenance mode, use the up
command:
php artisan up
To show a custom view when your application is in maintenance mode, you may add something like the following to your application's app/start/global.php
file:
App::down(function()
{
return Response::view('maintenance', array(), 503);
});
If the Closure passed to the down
method returns NULL
, maintenance mode will be ignored for that request.
Maintenance Mode & Queues
While your application is in maintenance mode, no queue jobs will be handled. The jobs will continue to be handled as normal once the application is out of maintenance mode.
Laravel Configuration的更多相关文章
-
优雅的使用 PhpStorm 来开发 Laravel 项目
[目录] Prerequisites plugin installation and configuration 1 Ensure Composer is initialized 2 Install ...
-
[php]laravel框架容器管理的一些要点
本文面向php语言的laravel框架的用户,介绍一些laravel框架里面容器管理方面的使用要点.文章很长,但是内容应该很有用,希望有需要的朋友能看到.php经验有限,不到位的地方,欢迎帮忙指正. ...
-
Centos7 编译安装 Nginx PHP Mariadb Memcached 扩展 ZendOpcache扩展 (实测 笔记 Centos 7.3 + Mariadb 10.1.20 + Nginx 1.10.2 + PHP 7.1.0 + Laravel 5.3 )
环境: 系统硬件:vmware vsphere (CPU:2*4核,内存2G,双网卡) 系统版本:CentOS-7-x86_64-Minimal-1611.iso 安装步骤: 1.准备 1.0 查看硬 ...
-
laravel/lumen 单元测试
Testing Introduction Application Testing Interacting With Your Application Testing JSON APIs Session ...
-
laravel administrator 一款通用的后台插件(PHP框架扩展)
前几天我看了一下zend framework 2的一些官方文档,也找了一些例子,可惜所有的资料少之甚少.于是我就开始去找这国外用的比较流行的PHP框架laravel,希望能够找到其合适的例子,而且我本 ...
-
Laravel 之Service Providers
Service providers are the central place of all Laravel application bootstrapping. Your own applicati ...
-
Laravel错误与日志处理
App\Exceptions\Handler class is where all exceptions triggered by your application are logged and th ...
-
SmartWiki开发日记之Laravel缓存扩展
SmartWiki简介请阅读: http://www.cnblogs.com/lifeil/p/6113323.html 因为SmartWiki的演示站点部署在阿里云上,阿里云有一个128M免费的Me ...
-
laravel小抄
原文地址:http://cheats.jesse-obrien.ca/ Artisan // Displays help for a given command php artisan --help ...
随机推荐
-
C# - DataValid数据验证类
从EasyCode 摘取下来的数据验证类 using System; using System.Collections.Generic; using System.Text; namespace Le ...
-
细菌(disease)
细菌(disease) 题目描述 近期,农场出现了D(1≤D≤15)种细菌.John要从他的N(1≤N≤1000)头奶牛中尽可能多地选些产奶,但是如果选中的奶牛携带了超过K(1≤K≤D)种不同细菌,所 ...
-
Java经典案例之-“最大公约数和最小公倍数”
/** * 描述:输入两个正整数m和n,求其最大公约数和最小公倍数.(最大公约数:最大公约数, * 也称最大公因数.最大公因子,指两个或多个整数共有约数中最大的一个.) * (最小公倍数:几个数共有的 ...
-
spring mvc 下载文件链接
http://www.blogjava.net/paulwong/archive/2014/10/29/419177.html http://www.iteye.com/topic/1125784 h ...
-
shell流程控制--循环语句
#!/bin/bash ### for循环,数字段形式 echo 'for 循环,数字段形式' ..} do echo $i done ### for 循环,双括号形式 echo 'for 循环,双括 ...
-
拓展abaqus python 模块
abaqus python 本身自带一些模块: 在安装路径:\\SIMULIA\Abaqus\6.14-1\tools\SMApy\python2.7\Lib\site-packages和另外一个2. ...
-
【BZOJ3730】震波(动态点分治)[复习]
题面 BZOJ 题解 动态点分治什么的完全不记得了.这回重新写一写. 首先我们把点分树给建出来. 操作只有两种,修改和询问距离某个点的距离不超过\(k\)的点的和. 两点之间的距离可以树链剖分之类的算 ...
-
tableView上出现空白的解决办法
创建tableView后,出现如下效果 解决办法: self.automaticallyAdjustsScrollViewInsets = NO; 个人认为,应该是取消系统默认行为,保证界 ...
-
细说setTimeout/setImmediate/process.nextTick的区别
node.js中的非IO的异步API提供了四种方法,分别为setTimeOut(),setInterval(),setImmediate()以及process.nextTick(),四种方法实现原理相 ...
-
R语言中两个数组(或向量)的外积怎样计算
所谓数组(或向量)a和b的外积,指的是a的每个元素和b的每个元素搭配在一起相乘得到的新元素.当然运算规则也可自己定义.外积运算符为 %o%(注意:百分号中间的字母是小写的字母o).比如: > a ...