구성 정보
- 환경 변수 유형
- 환경 구성 검색
- 현재 환경 확인
- 디버그 페이지에서 환경 변수 숨김
- 유지 관리 모드의 대안
구성
Introduction
Laravel 프레임워크의 모든 구성 파일은
config
디렉터리에 저장됩니다. . 각 옵션이 설명되어 있으며 언제든지 이러한 파일을 검토하여 사용 가능한 구성 옵션을 익힐 수 있습니다.config
目录中。每个选项都有说明,你可随时查看这些文件并熟悉都有哪些配置选项可供你使用。环境配置
对于应用程序运行的环境来说,不同的环境有不同的配置通常是很有用的。 例如,你可能希望在本地使用的缓存驱动不同于生产服务器所使用的缓存驱动。
Laravel 利用 Vance Lucas 的 PHP 库 DotEnv 使得此项功能的实现变得非常简单。在新安装好的 Laravel 应用程序中,其根目录会包含一个
.env.example
文件。如果是通过 Composer 安装的 Laravel,该文件会自动更名为.env
。否则,需要你手动更改一下文件名。你的
.env
文件不应该提交到应用程序的源代码控制系统中,因为每个使用你的应用程序的开发人员 / 服务器可能需要有一个不同的环境配置。此外,在入侵者获得你的源代码控制仓库的访问权的情况下,这会成为一个安全隐患,因为任何敏感的凭据都被暴露了。如果是团队开发,则可能希望应用程序中仍包含
.env.example
文件。因为通过在示例配置文件中放置占位值,团队中的其他开发人员可以清楚地看到哪些环境变量是运行应用程序所必需的。你也可以创建一个.env.testing
文件,当运行 PHPUnit 测试或以--env=testing
为选项执行 Artisan 命令时,该文件将覆盖.env
文件中的值。{tip}
.env
文件中的所有变量都可被外部环境变量(比如服务器级或系统级环境变量)所覆盖。环境变量类型
🎜🎜🎜환경 구성🎜🎜애플리케이션이 실행되는 환경에서는 환경마다 다른 구성을 갖는 것이 유용한 경우가 많습니다. 예를 들어 프로덕션 서버에서 사용하는 것과 다른 캐시 드라이버를 로컬로 사용하려고 할 수 있습니다. 🎜🎜Laravel은 Vance Lucas의 PHP 라이브러리 DotEnv를 사용하여 이 기능을 매우 간단하게 구현합니다. 새로 설치된 Laravel 애플리케이션의 루트 디렉터리에는.env
文件中的所有变量都被解析为字符串,因此创建了一些保留值以允许你从env()
.env.example
파일이 포함됩니다. Laravel이 Composer를 통해 설치된 경우 이 파일의 이름은 자동으로.env
로 변경됩니다. 그렇지 않으면 파일 이름을 수동으로 변경해야 합니다. 🎜🎜애플리케이션을 사용하는 각 개발자/서버는 서로 다른 환경 구성을 가져야 할 수 있으므로.env
파일을 애플리케이션의 소스 제어 시스템에 커밋해서는 안 됩니다. 또한 침입자가 소스 제어 저장소에 액세스하는 경우 민감한 자격 증명이 노출되므로 보안 위험이 발생합니다. 🎜🎜팀으로 개발하는 경우 애플리케이션에.env.example
파일을 계속 포함할 수 있습니다. 샘플 구성 파일에 자리 표시자 값을 배치하면 팀의 다른 개발자가 애플리케이션을 실행하는 데 필요한 환경 변수가 무엇인지 명확하게 확인할 수 있습니다. PHPUnit 테스트를 실행하거나--env=testing
옵션을 사용하여 Artisan 명령을 실행할 때를 덮어쓰는
파일. 🎜.env.testing
파일을 생성할 수도 있습니다. .env🎜{tip}
🎜🎜🎜.env
파일의 모든 변수는 외부 환경 변수(예: 서버 수준 또는 시스템 수준 환경 변수)로 재정의될 수 있습니다. 🎜환경 변수 유형
🎜.env
파일의 모든 변수는 문자열로 구문 분석됩니다. , 그래서env()
함수에서 더 많은 유형의 변수를 반환할 수 있도록 일부 예약된 값이 생성되었습니다. 🎜.env
值env()
值true (bool) true (true) (bool) true false (부울) 거짓 (거짓) (bool) false empty (string) '' (empty) (string) '' null (null) null (널) (null) null 공백이 포함된 값으로 환경 변수를 정의해야 하는 경우 값을 큰따옴표로 묶어 정의할 수 있습니다.
APP_NAME="我的 应用"
환경 구성 검색
애플리케이션이 요청을 받으면
.env
파일에 나열된 모든 변수가 PHP의 슈퍼 전역 변수$ _ENV
에.env
함수를 사용하여 이러한 변수의 값을 검색할 수 있습니다. 실제로 Laravel의 구성 파일을 보면 여러 옵션이 이미 이 함수를 사용하고 있음을 알 수 있습니다..env
文件中列出的所有变量将被加载到 PHP 的超级全局变量$ _ENV
中。你可以使用env
函数检索这些变量的值。事实上,如果你查看 Laravel 的配置文件,你就能注意到有数个选项已经使用了这个函数:'debug' => env('APP_DEBUG', false),
传递给
env
函数的第二个值是「默认值」。如果给定的键不存在环境变量,则会使用该值。确定当前环境
应用程序当前所处环境是通过
.env
文件中的APP_ENV
变量确定的。你可以通过App
facade 中的environment
方法来访问此值:$environment = App::environment();
你还可以传递参数给
environment
方法,以检查当前的环境配置是否与给定值匹配。 如果与给定值匹配,该方法将返回true
:if (App::environment('local')) { // 当前环境是 local } if (App::environment(['local', 'staging'])) { // 当前的环境是 local 或 staging... }
{tip} 应用程序当前所处环境检测可以被服务器级的
APP_ENV
环境变量覆盖。这在为相同的应用程序配置不同的环境时是非常有用的,这样你可以在你的服务器配置中为给定的主机设置与其匹配的给定的环境。在调试页面隐藏环境变量
当一个异常未被捕获并且
APP_DEBUG
环境变量为true
时,调试页面会显示所有的环境变量和内容。在某些情况下你可能想隐藏某些变量。你可以通过设置config/app.php
配置文件中的debug_blacklist
选项来完成这个操作。环境变量、服务器或者请求数据中都有一些变量是可用的。因此,你可能需要将
$_ENV
和$_SERVER
的变量加入到黑名单中:return [ // ... 'debug_blacklist' => [ '_ENV' => [ 'APP_KEY', 'DB_PASSWORD', ], '_SERVER' => [ 'APP_KEY', 'DB_PASSWORD', ], '_POST' => [ 'password', ], ], ];
访问配置值
你可以轻松地在应用程序的任何位置使用全局
config
函数来访问配置值。配置值的访问可以使用「点」语法,这其中包含了要访问的文件和选项的名称。还可以指定默认值,如果配置选项不存在,则返回默认值:$value = config('app.timezone');
要在运行时设置配置值,传递一个数组给
config
函数config(['app.timezone' => 'America/Chicago']);
配置缓存
为了给你的应用程序提升速度,你应该使用 Artisan 命令
config:cache
php artisan down
env
함수에 전달된 두 번째 값은 "기본값"입니다. 해당 키에 대한 환경 변수가 없으면 이 값이 사용됩니다. 🎜🎜🎜🎜🎜현재 환경 확인🎜🎜현재 애플리케이션 환경은.env
의APP_ENV를 통해 이루어집니다. 파일 코드> 변수가 결정됩니다.
App
파사드의environment
메소드를 통해 이 값에 접근할 수 있습니다: 🎜php artisan down --message="Upgrading Database" --retry=60
🎜 또한environment
메소드에 매개변수를 전달하여 현재 환경 구성이 지정된 값과 일치하는지 여부입니다. 이 메소드는 주어진 값과 일치하는 경우true
를 반환합니다: 🎜php artisan down --allow=127.0.0.1 --allow=192.168.0.0/16
🎜{tip} 애플리케이션의 현재 환경은 서버 수준
🎜🎜🎜🎜디버그 페이지에서 환경 변수 숨기기🎜🎜예외가 포착되지 않고APP_ENV
로 감지할 수 있습니다. 환경 가변적 적용 범위. 이는 동일한 애플리케이션에 대해 서로 다른 환경을 구성할 때 유용하므로 서버 구성의 지정된 환경과 일치하도록 지정된 호스트를 설정할 수 있습니다. 🎜APP_DEBUG
환경 변수true
이면 디버그 페이지에 모든 환경 변수와 콘텐츠가 표시됩니다. 어떤 경우에는 특정 변수를 숨기고 싶을 수도 있습니다.config/app.php
구성 파일에서debug_blacklist
옵션을 설정하여 이를 수행할 수 있습니다. 🎜🎜일부 변수는 환경 변수, 서버 또는 요청 데이터에서 사용할 수 있습니다. 따라서$_ENV
및$_SERVER
변수를 블랙리스트에 추가해야 할 수도 있습니다: 🎜php artisan up
🎜🎜🎜구성 값에 액세스
🎜글로벌config
기능을 사용하면 애플리케이션 어디에서나 구성 값에 쉽게 액세스할 수 있습니다. 구성 값은 액세스할 파일 이름과 옵션이 포함된 "점" 구문을 사용하여 액세스할 수 있습니다. 구성 옵션이 없는 경우 반환될 기본값을 지정할 수도 있습니다. 🎜rrreee🎜런타임에 구성 값을 설정하려면 배열을config
함수에 전달하세요. 🎜rrreee🎜< a name="configuration -caching">🎜🎜구성 캐싱
🎜애플리케이션 속도를 향상하려면 Artisan 명령config:cache<를 사용하여 모든 구성 파일을 단일 파일로 캐시해야 합니다. /코드> . 그러면 애플리케이션의 모든 구성 옵션이 단일 파일로 결합되어 프레임워크에 의해 신속하게 로드됩니다. 🎜
일반적으로 프로덕션 배포 루틴의 일부로
php artisan config:cache
명령을 실행해야 합니다. 애플리케이션 개발 중에 구성 옵션을 변경해야 하는 경우가 많기 때문에 이 명령을 로컬 개발 환경에서 실행해서는 안 됩니다.php artisan config:cache
命令作为生产环境部署常规工作的一部分。这个命令不应在本地开发环境下运行,因为配置选项在应用程序开发过程中是经常需要被更改的。{note} 如果在部署过程中执行
config:cache
命令,那你应该确保只从配置文件内部调用env
函数。一旦配置被缓存,.env
文件将不再被加载,所有对env
函数的调用都将返回null
。维护模式
当应用程序处于维护模式时,所有对应用程序的请求都显示为一个自定义视图。这样可以在更新或执行维护时轻松地「关闭」你的应用程序。 维护模式检查包含在应用程序的默认中间件栈中。如果应用程序处于维护模式,则将抛出一个状态码为 503 的
MaintenanceModeException
异常。要启用维护模式,只需执行下面的 Artisan 的
rrreeedown
命令:你还可以向
rrreeedown
命令提供message
和retry
选项。其中message
选项的值可用于显示或记录自定义消息,而retry
值可用于设置 HTTP 请求头中Retry-After
的值:即使在维护模式下,也可以使用命令
rrreeeallow
选项允许特定的 IP 地址或网络访问应用程序:要关闭维护模式,请使用
rrreeeup
命令:{tip} 你可以通过修改
resources/views/errors/503.blade.php
{note} 배포 중에
config:cache
명령을 실행하는 경우 구성 파일 내에서env
함수만 호출해야 합니다. 구성이 캐시되면.env
파일은 더 이상 로드되지 않으며env
함수에 대한 모든 호출은null
을 반환합니다.유지 관리 모드
앱이 유지 관리 모드에 있으면 앱에 대한 모든 요청이 맞춤 보기로 표시됩니다. 이렇게 하면 업데이트하거나 유지 관리를 수행할 때 애플리케이션을 쉽게 "종료"할 수 있습니다. 유지 관리 모드 검사는 애플리케이션의 기본 미들웨어 스택에 포함됩니다. 애플리케이션이 유지 관리 모드에 있는 경우 상태 코드 503과 함께
MaintenanceModeException
예외가 발생합니다.유지 관리 모드를 활성화하려면 아래 Artisan의
rrreeedown
명령을 실행하세요.또한rrreeemessage
및down
명령을 제공할 수도 있습니다. >다시 시도 옵션.message
옵션 값을 사용하여 사용자 정의 메시지를 표시하거나 녹음할 수 있으며,retry
값을 사용하여Retry-After< 값을 설정할 수 있습니다. /code>를 HTTP 요청 헤더에 추가하세요. : rrreee 유지 관리 모드에서도
allow
명령을 사용하여 특정 IP 주소나 네트워크가 애플리케이션에 액세스하도록 허용할 수 있습니다.
up code> 명령 사용: 🎜rrreee🎜{tip} resources/views/errors/503.blade.php를 수정하여 기본 유지 관리 모드 템플릿을 사용자 정의할 수 있습니다. 코드> 템플릿 파일. 🎜🎜🎜유지 관리 모드 및 대기열🎜🎜애플리케이션이 유지 관리 모드에 있으면 대기열 작업이 처리되지 않습니다. 이러한 작업은 애플리케이션이 유지 관리 모드를 종료한 후에도 계속 처리됩니다. 🎜🎜유지 관리 모드의 대안🎜🎜유지 관리 모드에서는 애플리케이션이 몇 초 동안 다운타임(응답 없음)을 유발할 수 있으므로 Laravel을 사용한 다운타임 없는 배포를 위해 Envoyer와 같은 대안을 사용하는 것을 고려해 볼 수 있습니다. 🎜🎜이 글은 🎜LearnKu.com🎜 웹사이트에 처음 게시되었습니다. 🎜🎜