如何掌握和创造新环境
编辑本页警告:您正在浏览的文档欧宝官网下载appob娱乐下载Symfony 2.6,现已不再维护。
读本页的更新版本用于Syob娱乐下载mfony 6.2(当前稳定版本)。
如何掌握和创造新环境
每个应用程序都是代码和一组配置的组合,这些配置规定了代码应该如何运行。配置可以定义正在使用的数据库,是否应该缓存某些内容,或者应该如何详细记录日志。
在Syob娱乐下载mfony中,“环境”的思想是指相同的代码库可以使用多种不同的配置运行。例如,dev
环境应该使用使开发容易和友好的配置,而刺激
环境应该使用一组针对速度优化的配置。
不同的环境,不同的配置文件
典型的Symfonyob娱乐下载应用程序从三个环境开始:dev
,刺激
,测验
.如前所述,每个环境只是表示一种使用不同配置执行相同代码库的方法。因此,每个环境加载自己的单独配置文件就不足为奇了。如果您使用YAML配置格式,则使用以下文件:
- 为
dev
环境:应用程序/配置/ config_dev.yml
- 为
刺激
环境:应用程序/配置/ config_prod.yml
- 为
测验
环境:应用程序/配置/ config_test.yml
类中默认使用的简单标准AppKernel
类:
12 3 4 5 6 7 8 9 10 11 12 13
/ / app / AppKernel.php/ /……类AppKernel扩展内核{/ /……公共函数registerContainerConfiguration(LoaderInterface$加载程序){$加载程序->负载($这->getRootDir()。“/ config / config_”.$这->getEnvironment()。“.yml”);}}
如您所见,在加载Symfony时,它使用给ob娱乐下载定的环境来确定加载哪个配置文件。这以一种优雅、强大和透明的方式实现了多个环境的目标。
当然,在现实中,每个环境只是与其他环境略有不同。通常,所有环境都将共享大量公共配置。打开config_dev.yml
配置文件,你可以看到这是如何轻松和透明地完成:
- YAML
- XML
- PHP
1 2 3 4
进口:-{资源:config.yml}#……
要共享公共配置,每个环境的配置文件只需首先从中央配置文件(config.yml
).然后,文件的其余部分可以通过覆盖个别参数而偏离默认配置。例如,默认情况下web_profiler
工具栏被禁用。然而,在dev
的值来激活工具栏工具栏
选项中的config_dev.yml
配置文件:
- YAML
- XML
- PHP
1 2 3 4 5 6 7
# app / config / config_dev.yml进口:-{资源:config.yml}web_profiler:工具栏:真正的#……
在不同的环境中执行应用程序
要在每个环境中执行应用程序,请使用app.php
(对于刺激
环境)或app_dev.php
(对于dev
环境)前端控制器:
1 2
http://localhost/app.php -> *prod*环境http://localhost/app_dev.php -> *dev*环境
请注意
给出的url假设您的web服务器配置为使用web /
应用程序的目录作为其根目录。阅读更多安装Symfonyob娱乐下载.
如果你打开其中一个文件,你很快就会看到每个文件使用的环境都被显式地设置了:
1 2 3 4 5 6
/ /网络/ app.php/ /……$内核=新AppKernel (“刺激”,假);/ /……
的刺激
属性指定此应用程序将在刺激
环境。通过ob娱乐下载使用此代码并更改环境字符串,可以在任何环境中执行Symfony应用程序。
请注意
的测验
环境是在编写功能测试时使用的,不能通过前端控制器直接在浏览器中访问。换句话说,与其他环境不同,这里没有app_test.php
前端控制器文件。
选择控制台命令的环境
默认情况下,Symfonob娱乐下载y命令执行在dev
环境,并启用调试模式。使用- - - env
而且——没有调试
修改此行为的选项:
1 2 3 4 5 6 7 8
# 'dev'环境和调试启用$ PHP应用程序/控制台命令_name# 'prod'环境('prod'总是禁用调试)$ PHP app/console command_name——env=prod# 'test'环境和调试禁用$ PHP app/console command_name——env=测验——没有调试
除了- - - env
而且——调试
选项,Symfony命令的行为也可以用环境变量来控ob娱乐下载制。Symfob娱乐下载ony控制台应用程序在执行任何命令之前检查这些环境变量的存在和值:
-
ob娱乐下载SYMFONY_ENV
-
将命令的执行环境设置为此变量的值(
dev
,刺激
,测验
等); -
ob娱乐下载SYMFONY_DEBUG
-
如果
0
,关闭调试模式。否则,开启调试模式。
这些环境变量对于生产服务器非常有用,因为它们允许您确保命令始终在刺激
环境,而无需添加任何命令选项。
创建新环境
默认情况下,Symfony应ob娱乐下载用程序有三个处理大多数情况的环境。当然,由于环境只不过是一个对应于一组配置的字符串,因此创建一个新环境非常容易。
例如,假设在部署之前,需要对应用程序进行基准测试。对应用程序进行基准测试的一种方法是使用接近生产环境的设置,但是使用Symfony的设置ob娱乐下载web_profiler
启用。这允许Symfony在基ob娱乐下载准测试时记录有关应用程序的信息。
实现这一目标的最好方法是通过一个新的环境,例如,基准
.首先创建一个新的配置文件:
- YAML
- XML
- PHP
1 2 3 4 5 6
# app / config / config_benchmark.yml进口:-{资源:config_prod.yml}框架:分析器:{only_exceptions:假}
请注意
由于解析参数的方式,您不能使用它们动态地在导入中构建路径。这意味着以下内容是行不通的:
- YAML
- XML
- PHP
1 2 3
# app / config / config.yml进口:-{资源:“% kernel.root_dir % / parameters.yml”}
通过这个简单的添加,应用程序现在支持名为基准
.
该新配置文件从刺激
环境并修改它。这保证了新环境与刺激
环境,除了这里显式做的任何更改。
因为您希望这个环境可以通过浏览器访问,所以还应该为它创建一个前端控制器。复制web / app.php
文件web / app_benchmark.php
并将环境编辑为基准
:
1 2 3 4 5 6 7
/ /网络/ app_benchmark.php/ /……//更改这一行$内核=新AppKernel (“基准”,假);/ /……
新环境现在可以通过以下途径访问:
1
http:/ / localhost / app_benchmark.php
请注意
有些环境,比如dev
环境,永远不会被公众在任何已部署服务器上访问。这是因为出于调试目的,某些环境可能会提供太多关于应用程序或底层基础设施的信息。为了确保这些环境无法访问,前端控制器通常通过控制器顶部的以下代码来保护外部IP地址:
1 2 3
如果(!in_array (@$_SERVER[“REMOTE_ADDR”),数组(“127.0.0.1”,“::1”))) {死(“您不允许访问此文件。检查”.basename (__FILE__).以获取更多信息。”);}
环境和缓存目录
ob娱乐下载Symfony在许多方面利用了缓存:应用程序配置、路由配置、Twig模板等都被缓存到存储在文件系统文件中的PHP对象中。
默认情况下,这些缓存文件主要存储在app /缓存
目录中。但是,每个环境都会缓存自己的一组文件:
1 2 3 4 5 6
/├─app/│├─cache/││├─dev/ # cache directory for *dev* environment││├─…
有时,在调试时,检查缓存文件以了解某些东西是如何工作的可能是有帮助的。这样做时,请记住查看您正在使用的环境的目录(最常见的是dev
在开发和调试时)。虽然它可以变化,但应用程序/ dev /缓存
目录包括以下内容:
-
appDevDebugProjectContainer.php
- 缓存的“服务容器”,表示缓存的应用程序配置。
-
appDevUrlGenerator.php
- 由路由配置生成并在生成url时使用的PHP类。
-
appDevUrlMatcher.php
- 用于路由匹配的PHP类——请查看这里的编译正则表达式逻辑,该逻辑用于将传入url匹配到不同的路由。
-
树枝/
- 这个目录包含所有缓存的Twig模板。
请注意
您可以轻松地更改目录位置和名称。欲了解更多信息,请阅读文章如何覆盖Symfony的默认目录ob娱乐下载结构.
要进一步
阅读关于如何设置服务容器的外部参数.