Laravel 配置文件详解

在创建Laravel项目时,不论是通过composer还是仓库拉取,都会在根目录下创建一个.env.example文件,这是一个配置文件的示例:

APP_NAME=Laravel
APP_ENV=local
APP_KEY=
APP_DEBUG=true
APP_URL=http://localhost
//后续省略

将这个文件重命名为.env,即成为正式的配置文件。env是英语 environment(环境)的缩写。
如果项目根目录已经存在.env文件,则省略这一步。但大多数情况下,env文件由于配置了大量项目信息,部分内容可能是私有保密的,因此默认在git的忽略列表中。

获取配置信息

使用env函数即可获取env文件中配置的信息
格式:env( '配置项' , '缺省值')

//.env文件
APP_NAME=Laravel
APP_ENV=local
APP_KEY=
APP_DEBUG=true
APP_URL=http://localhost
//后续省略

env('APP_URL');
//输出 http://localhost

env('APP_TIME','2024');
//.env文件不存在APP_TIME配置项,输出缺省值2024

env('APP_TIME');
//.env文件不存在APP_TIME配置项,也没有缺省值,输出null

建议使用env函数时配置缺省值,以免发生没有配置项的错误。

配置文件使用最佳实践

前面提到,env是英语 environment(环境)的缩写。顾名思义,一些跟环境相关的设定参数都可以写到.env文件中。最常见的,也是示例.env文件中就已经存在的数据库配置:

DB_CONNECTION=mysql      //数据库类型,例如mysql、SQL server、postgre等等
DB_HOST=127.0.0.1        //数据库服务器地址
DB_PORT=3306             //数据库服务器端口
DB_DATABASE=             //数据库名称
DB_USERNAME=             //用户名
DB_PASSWORD=             //密码

框架如何获取到.env文件中的配置?
在项目根目录config文件夹下,database.php即为框架的数据库配置文件。

// config/database.php
// 已删除其他无关配置
return [
    'default' => env('DB_CONNECTION', 'mysql'),
    'connections' => [
        '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', ''),
        ],
    ],
];

可以看到,在配置文件中,同样使用了env函数来获取.env文件中配置的信息。

应该在什么时候使用env函数?

Laravel框架提供了配置缓存的功能,使用 php artisan config:cache 命令即可将config文件夹下所有的配置文件存储到缓存中,这样能避免多个配置文件的反复读取,提高一定的性能。并且在执行后,将不再支持使用env函数以动态的方式读取.env文件中的配置信息。
因此,请勿将env函数等价于define或const函数。除了config文件夹下的配置文件,不应在任何其他地方使用env函数,而是使用config函数代替。

示例:某个控制器方法需要从.env配置文件读取logo图片的url

// .env文件
LOGO_URL=https://whsand.com/logo.png

<?php
	namespace App\Http\Controllers;
	
	class logoController extends Controller
	{
		public function getUrl(){
			return env('LOGO_URL');
		}
	}

上面的getUrl方法中使用了env('LOGO_URL')来获取.env文件中配置的LOGO_URL,在测试环境时可能是正常的,但是到了正式环境执行过php artisan config:cache 命令之后,env('LOGO_URL')将返回null,导致出现故障。

正确且优雅的使用方式:

在config文件夹下创建custom.php文件:

// custom.php文件
// 文件名称可自定义
<?php
	return [
		'logo' => [
			'url' => env('LOGO_URL','default')
		]
	];

改造控制器方法:

<?php
	namespace App\Http\Controllers;
	
	class logoController extends Controller
	{
		public function getUrl(){
			return config('custom.logo.url');
		}
	}

config函数将从config文件夹的配置文件读取配置,使用方法为:
config('文件名称 . 配置项'),可以使用点号 . 表示配置的数组层级。
这样改造不论是否执行过配置缓存命令,都能顺利获取到.env文件中配置的LOGO_URL,即代码能够同时适应测试环境和生产环境。

配置缓存发生了什么?

执行php artisan config:cache 命令之后,Laravel框架将会把config文件夹下所有的配置文件缓存到bootstrap/cache/config.php文件中:

// bootstrap/cache/config.php文件
<?php
	return 
		array (
			'app' => 
				array(
					//此处省略框架自带配置
				),
			'database' => 
				array(
					//此处省略数据库配置
				),
			'custom' => 
			 	array (
					'logo' => 
						array(
							'url' => 'https://whsand.com/logo.png',
						),
				),
		);

可以看出配置缓存的原理并不复杂,只是将config文件夹下的所有文件都集中到一个文件中,并且在此过程中会自动执行函数或表达式获取最终的静态结果。这样做的好处是只需要缓存bootstrap/cache/config.php一个文件即可,减小了检索不同配置文件的性能开销。如果缓存使用redis或memcache等内存驱动,将不会创建bootstrap/cache/config.php文件,而是直接缓存在内存中,实现更快的读取调用。

其他建议

如果改动了.env文件的配置信息,需要重新执行php artisan config:cache来刷新缓存;
如果希望取消配置缓存,改为动态读取,则需要执行php artisan config:clear。这将删除缓存文件,重新启用支持env函数动态读取.env文件。
强烈建议在生产环境开启配置缓存。 当配置文件足够大或配置项足够多时,配置缓存能够显著提高性能。

  • 24
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Hadoop配置文件是用来配置Hadoop集群的参数和属性的文件。它们位于Hadoop安装目录的`etc/hadoop`文件夹中。以下是一些常见的Hadoop配置文件及其详解: 1. **core-site.xml**: 这个配置文件包含了Hadoop核心的配置属性,比如文件系统的默认URI、I/O缓冲区大小和权限检查等。其中一个重要的属性是`fs.defaultFS`,它指定了默认的文件系统URI。 2. **hdfs-site.xml**: 这个配置文件包含了Hadoop分布式文件系统(HDFS)的配置属性。它定义了HDFS的数据块大小、副本数量、存储路径等。其中一个重要的属性是`dfs.replication`,它指定了数据块的副本数量。 3. **mapred-site.xml**: 这个配置文件包含了MapReduce框架的配置属性。它定义了作业跟踪器和任务跟踪器的地址、任务重试次数、任务并行度等。其中一个重要的属性是`mapreduce.framework.name`,它指定了使用的MapReduce框架。 4. **yarn-site.xml**: 这个配置文件包含了YARN(Yet Another Resource Negotiator)资源管理框架的配置属性。它定义了资源管理器和节点管理器的地址、任务分配策略、容器内存大小等。其中一个重要的属性是`yarn.resourcemanager.hostname`,它指定了资源管理器的主机名。 这些只是Hadoop配置文件的一部分,还有其他一些配置文件用于特定组件或插件的配置。每个配置文件都有其特定的作用,通过修改这些配置文件,可以根据集群的需求来定制Hadoop的行为和性能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值