搜索
首页
笔记
案例
关于
课程列表
laravel
安装及运行
配置信息
路由
路由第一讲
路由第二讲
路由第三讲
表单伪造与CSRF保护
请求
接受请求与获取输入
获取cookie及上传文件
响应
视图
url
session
课程导航
计算机基础知识
C
Linux
linux常用软件
计算机网络
程序员修养
设计模式
工具
Git
composer
vim
IntelliJ IDEA
wireshark
laravel
Spring
SpringMVC
Maven
数据库
MySQL
Redis
MongoDB
JDBC
Mybatis
MyBatis-Plus
服务端编程
PHP
Java
shell script
JavaWeb
HTML / CSS
HTML
CSS
HTML5
CSS3
BOOTSTRAP
JavaScript
JavaScript
JQuery
layui
安装及运行
配置信息
可能许多童鞋和我一样,在看文档时被.env文件和config目录里的配置文件搞混乱了,它们之间到底什么关系。今天,我们一起看攻克laravel的配置信息吧。 ## .env文件与config目录配置文件关系 首先,文档里说laravel所有配置文件都保存在config目录的文件中。那么根目录下的.env文件到底是干嘛的呢?我们打开看下.env文件以及config/app.php这两个文件 ```php # .env文件 APP_NAME=Laravel …… # app.php文件 'name' => env('APP_NAME', 'Larave'), ``` 看到这,我基本可以猜测出来大致意思了:**如果config目录下的配置文件配置项使用了env函数,那么如果.env文件中配置了该选项,则使用.env文件里的值,否则使用配置文件设置的默认值** 接下来,来验证我的猜测。首先写下测试代码: ```php return config('app.name'); ``` 接着,将.env文件的APP_NAME修改为boy,app.php文件里的默认值修改为girl ``` APP_NAME=boy …… 'name' => env('APP_NAME', 'girl'), ``` 发现一个有趣的问题,测试代码返回的结果还是Laravel。然后,我重启了下php artisan serve,然后再刷新才出现结果为boy。这样就验证了我的猜测是对的,有引出另一个结果:**如果用到的配置值在.env文件里,那么修改.env文件里的值不会立即有效,必须重启才会有效** 为了验证我的另一个猜测,我将.env里的APP_NAME那行给删除了,然后重启。测试的返回结果是girl。接着,我将girl修改为girl1,然后刷新浏览器,返回值是girl1。我的结论验证的正确的。 这里总结下: * **如果config目录下的配置文件配置项使用了env函数,那么如果.env文件中配置了该选项,则使用.env文件里的值,否则使用配置文件设置的默认值** * **如果用到的配置值在.env文件里,那么修改.env文件里的值不会立即有效,必须重启php artisan serve才会有效** ## .env文件的作用 既然有配置文件,那么这个.env文件的作用是什么呢? 你肯定有这样的经历吧,本地环境和服务器环境是不同的,有些配置值就会不一样。这样就会导致一个问题,如果你使用了版本控制系统,那么服务器端拉取了最新的代码,服务端的配置文件就会变为本地开发环境的了。然后你需要一个个的去看,然后去修改,是不是非常的麻烦! .env文件就是为了解决这样的问题的。我们可以将服务器和本地环境配置项一致的,都放在配置文件中,将不同的则放在.env文件中。另外注意,不将.env文件放在版本控制系统中。 另外你应该注意到,根目录下还有一个.env.example文件。这个文件是需要放在版本控制系统中的,它是为了让其他开发者知道,你应该将这个文件复制一份,并将其名称修改为.env。然后将里面的值按照你自己的环境设定。 如果你和我一样,有三种不同的环境:开发环境、测试环境、线上环境。那么你还应该再创建一个.env.testing文件。当运行 PHPUnit 测试或以 --env=testing 为选项执行 Artisan 命令时,该文件将覆盖 .env 文件中的值。 ### 超全局变量$_ENV .env文件了列出的所有变量,会被加载到php的超全局变量$_ENV中,可以通过该变量检索相应的值。 ### 确定当前系统环境 应用程序当前的所处环境是由.env文件里的APP_ENV决定的。你可以用App::environment()方法来获取该选项的值。如: ```php if ('local' == App::environment()) { // 本地环境 } ``` ## 在调试页面隐藏环境变量 当一个异常未被捕获并且 APP_DEBUG 环境变量为 true 时,调试页面会显示所有的环境变量和内容。在某些情况下你可能想隐藏某些变量。你可以通过设置 config/app.php 配置文件中的 debug_blacklist 选项来完成这个操作。 环境变量、服务器或者请求数据中都有一些变量是可用的。因此,你可能需要将 $_ENV 和 $_SERVER 的变量加入到黑名单中: ```php return [ // ... 'debug_blacklist' => [ '_ENV' => [ 'APP_KEY', 'DB_PASSWORD', ], '_SERVER' => [ 'APP_KEY', 'DB_PASSWORD', ], '_POST' => [ 'password', ], ], ]; ``` ## 访问/修改配置值 这个很简单,没什么好讲的 ```php config('app.name'); // 获取配置值 config(['app.name' => 'new value']); //设置值 ``` ## 维护模式 当应用程序处于维护模式时,所有对应用程序的请求都显示为一个自定义视图。这样可以在更新或执行维护时轻松地「关闭」你的应用程序。 维护模式检查包含在应用程序的默认中间件栈中。如果应用程序处于维护模式,则将抛出一个状态码为 503 的MaintenanceModeException 异常。 要启用维护模式,只需执行下面的 Artisan 的 down 命令: ```php php artisan down ``` 你还可以向 down 命令提供 message 和 retry 选项。其中 message 选项的值可用于显示或记录自定义消息,而 retry 值可用于设置 HTTP 请求头中 Retry-After 的值: ```php php artisan down --message="Upgrading Database" --retry=60 ``` 即使在维护模式下,也可以使用命令 allow 选项允许特定的 IP 地址或网络访问应用程序: ```php php artisan down --allow=127.0.0.1 --allow=192.168.0.0/16 ``` 要关闭维护模式,请使用 up 命令: ```php php artisan up ``` **技巧:你可以通过修改 resources/views/errors/503.blade.php 模板文件来自定义默认维护模式模板。** ### 维护模式 & 队列 当应用程序处于维护模式时,不会处理队列任务。而这些任务会在应用程序退出维护模式后再继续处理。 ———————————————— 文章部分内容转自链接:https://learnku.com/docs/laravel/7.x/configuration/7448#hiding-environment-variables-from-debug
安装及运行
文章目录