[英]Does Symfony 4 load the environment variables on every request in the "prod" environment?
Symfony 4 是否以某种方式在“prod”环境中保存或缓存环境变量参数,还是在每次请求时检索它们?
我的问题是,当我使用 Apache 托管我的 Symfony 应用程序时,我需要通过使用SetEnv
指令在VirtualHost
配置中定义所有环境变量来列出所有环境变量; 我宁愿不必这样做。
我希望在使用 PHP CLI 时,我可以通过捕获或缓存参数来“编译”Symfony 项目,以便当应用程序通过 Apache 运行时,它使用这些“缓存”参数。
它是可行的还是只有SetEnv
方法?
Symfony 使用DotEnv 组件来处理环境变量。
DotEnv 组件读取.env
文件并将其内容加载到环境变量中。
.env
文件,则首先加载这个文件。 如果没有.env
文件,但存在.env.dist
文件,则使用此文件代替。.env.local
文件存在,则立即加载。 此文件不应提交到源代码存储库,其值会覆盖先前文件中的值.env.$env.local
(或者如果它不存在但.env.$env
存在),则立即加载。 同样,这些值会覆盖之前的值。 这将填充所有声明的环境变量,但不会覆盖现有的环境变量。 读取.env
文件.env
性能造成.env
,但几乎可以忽略不计。
这些加载依赖于bootstrap.php
文件,默认加载到public/index.php
和bin/console
; 因此该方法同时为HTTP 请求和控制台应用程序提供服务,因此您可以使用来存储这些值,而不是在 Apache 配置中使用SetEnv
指令。
但是等等,还有更多……
在上述之上, 您可以将所有这些变量转储到 PHP 优化的文件中,这样.env
文件就不需要在每次请求时都被解析。
为此,您只需执行:
composer dump-env prod
这将创建一个.env.local.php
文件。 如果此文件存在,则根本不会读取上述任何内容。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.