如何把握和创造新的环境

编辑该页面

警告:你浏览的文档欧宝体育电话欧宝娱乐app下载地址Symfony 2.8,不再维护。

这个页面的更新版本Symf欧宝娱乐app下载地址ony 6.2(当前的稳定版本)。

如何把握和创造新的环境

每个应用程序的代码和一组配置组合显示代码应该如何函数。配置可以定义所使用的数据库,如果应该缓存或冗长的日志应该如何。

在Sy欧宝娱乐app下载地址mfony中,“环境”的概念是相同的代码库可以使用多个不同的配置运行。例如,dev环境应该使用配置,使得开发简单和友好,而刺激环境应该使用一组配置优化的速度。

不同的环境,不同的配置文件

一个典型的Symfo欧宝娱乐app下载地址ny应用始于三个环境:dev,刺激,测试。如前所述,每个环境仅仅代表一个方法执行相同的代码库与不同的配置。它应该不足为奇每个环境加载自己的个人配置文件。如果你使用YAML配置格式,使用以下文件:

  • dev环境:应用程序/配置/ config_dev.yml
  • 刺激环境:应用程序/配置/ config_prod.yml
  • 测试环境:应用程序/配置/ config_test.yml

这是通过一个简单的标准内默认使用的AppKernel类:

1 2 3 4 5 6 7 8 9 10 11 12 13
/ / app / AppKernel.php/ /……AppKernel扩展内核{/ /……公共函数registerContainerConfiguration(LoaderInterface美元加载程序){美元加载程序- >负载(美元- >getRootDir ()。“/ config / config_”美元- >getEnvironment ()。“.yml”);}}

如您所见,Symfony加载时,它使用给定欧宝娱乐app下载地址的环境来确定哪个配置文件加载。实现这个目标的多个环境优雅,强大的和透明的方式。

当然,在现实中,每个环境只有从别人有点不同。一般来说,所有的环境中都有一大群共同配置。打开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 - > *刺激*环境http://localhost/app_dev。php - > * dev *环境

如果你没有要么文件名中的URL,然后由您的web服务器来决定哪一个在幕后执行的文件。如果你使用内置的PHP web服务器,它知道使用app_dev.php文件。在生产时,你会配置您的web服务器使用app.php。无论哪种方式:这两个文件总是执行之一

请注意

给定的url假设您的web服务器配置为使用web /应用程序的根目录。阅读更多的安装Symfony欧宝娱乐app下载地址

如果你打开一个文件,您很快就会看到,每个使用的环境是显式地设置:

1 2 3 4 5 6
/ /网络/ app.php/ /……美元内核=AppKernel (“刺激”,);/ /……

刺激键指定该应用程序将在运行刺激环境。Sy欧宝娱乐app下载地址mfony应用程序可以在任何环境中使用这段代码执行和不断变化的环境的字符串。

请注意

测试环境编写功能测试时使用,不可以在浏览器中直接通过前端控制器。换句话说,与其他环境,没有app_test.php前端控制器文件。

重要,但无关的话题环境参数作为第二个参数AppKernel构造函数。这将指定此应用程序是否应在“调试模式”运行。不管环境,Symfony应用程序可以设置为运行与调试模式欧宝娱乐app下载地址真正的。这影响到应用程序中的许多事情,如如果应该显示错误或者缓存文件在每个请求动态重建。虽然不是必需的,一般设置为调试模式真正的dev测试环境和刺激环境。

在内部,调试模式变成了的价值kernel.debug内部参数使用服务容器。如果你看在应用程序配置文件,您将看到使用的参数,例如,使用时打开或关闭日志记录DBAL原则:

  • YAML
  • XML
  • PHP
1 2 3 4
原则:dbal:日志:“% kernel.debug %”#……

Symfon欧宝娱乐app下载地址y 2.3,显示错误或不不再取决于调试模式。你需要使你前端控制器通过调用使()

控制台命令选择环境

默认情况下,Symfon欧宝娱乐app下载地址y命令的执行dev环境和启用了调试模式。使用- - - env——没有调试选项来修改这个行为:

1 2 3 4 5 6 7 8
#“开发”环境和启用调试美元php应用程序/控制台command_name#“刺激”环境(调试总是禁用“刺激”)美元php应用程序/控制台command_name——env =刺激#“测试”环境和调试禁用美元php应用程序/控制台command_name——env =测试——没有调试

除了- - - env——没有调试选项,Symfony命令的行为也可以控制环境变量。欧宝娱乐app下载地址Symf欧宝娱乐app下载地址ony控制台应用程序检查这些环境变量的存在和价值之前执行任何命令:

欧宝娱乐app下载地址SYMFONY_ENV
设置命令的执行环境这个变量的值(dev,刺激,测试等);
欧宝娱乐app下载地址SYMFONY_DEBUG
如果0禁用调试模式。否则,启用调试模式。

这些环境变量对生产服务器非常有用,因为它们允许你总是确保命令中运行刺激环境,而无需添加任何命令选项。

创建一个新的环境

默认情况下,一个Symfon欧宝娱乐app下载地址y应用程序有三个环境处理大多数情况下。当然,因为一个环境只不过是一个字符串,该字符串对应于一组配置,创建一个新的环境是相当容易的。

例如,假设在部署之前,您需要应用程序基准。基准测试应用程序的一个方法是使用预设置,但在Symfony的欧宝娱乐app下载地址web_profiler启用。这允许Symfony基准欧宝娱乐app下载地址测试时记录您的应用程序的信息。

完成这个的最好办法是通过一个新的环境,例如,基准。首先创建一个新的配置文件:

  • 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__)。“更多信息”。);}

环境和缓存目录

欧宝娱乐app下载地址Symfony利用缓存在许多方面:应用程序配置,路由配置,树枝模板和更多的缓存PHP对象存储在文件系统上的文件。

默认情况下,这些主要是存储在缓存文件app /缓存目录中。然而,每个环境缓存它自己的一组文件:

1 2 3 4 5 6

                 
                  缓存/ /├─app /│├─││├─dev / #缓存目录* dev *环境││└─刺激/ *刺激* #缓存目录环境│├─……

有时,当调试,这可能有助于检查缓存文件了解工作。当这样做时,记得要看环境的目录你使用(最常见的dev在开发和调试)。虽然各不相同,应用程序/ dev /缓存目录包括以下:

appDevDebugProjectContainer.php
缓存的服务容器,代表了缓存的应用程序配置。
appDevUrlGenerator.php
PHP类时产生的路由配置和使用生成的url。
appDevUrlMatcher.php
使用的PHP类路径匹配——看逻辑编译正则表达式用于匹配传入的url来不同的路线。
树枝/
这个目录包含所有缓存的树枝模板。

请注意

你可以很容易地改变位置和名称的目录。欲了解更多信息,请阅读这篇文章如何覆盖Symfony的默认目录欧宝娱乐app下载地址结构

这项工作,包括代码示例,许可下Creative Commons冲锋队3.0许可证。