第5步:故障排除问题

5.2版本
保持 不明意
5.0

故障排除问题

设置项目也是有关调试问题的正确工具。

安装更多依赖项

请记住,该项目的依赖性非常少。没有模板引擎。没有调试工具。没有伐木系统。此想法是您可以在需要时添加更多依赖项。如果您开发HTTP API或CLI工具,为什么依赖于模板引擎?

我们如何添加更多依赖项?通过作曲家。除了“常规”作曲家包之外,我们将使用两个“特殊”包装:

  • ob娱乐下载Symfony组件:提供大多数应用程序需要的核心功能和低级抽象的软件包(路由,控制台,HTTP客户端,邮件,缓存,...);
  • ob娱乐下载Symfony捆绑:添加高级功能或提供与第三方库(捆绑包主要由社区贡献的集成)。欧宝体育平台怎么样

首先,让我们添加Symfony Profiler,时间保存ob娱乐下载在问题的根本原因时:

1
$ ob娱乐下载symfony composer req profiler --dev

探查器是一个别名ob娱乐下载Symfony / Profiler-Pack包裹。

别名不是作曲家功能,而是由symfony提供的概念,使您的生活更轻松。ob娱乐下载别名是流行的Composer软件包的快捷方式。想要orm申请吗?要求orm.。想开发一个API吗?要求API.。这些别名被自动解析为一个或多个常规作曲家包。他们是Symfony核心团队制定的主要选择。ob娱乐下载

另一个简洁的特点是你总是可以省略ob娱乐下载小贩。要求缓存代替ob娱乐下载Symfony / Cache.

小费

你还记得我们提到了一个名为的Composer插件吗?ob娱乐下载Symfony / Flex.前?别名是其中一个功能。

了解Symfony环境ob娱乐下载

你注意到了吗?--dev.旗帜上作曲家命令?随着Symfoob娱乐下载ny Profiler在开发期间只有有用,我们希望避免它在生产中安装。

ob娱乐下载symfony支持概念环境。默认情况下,它为三个内置支持,但您可以添加尽可能多的:开发prod, 和测试。所有环境共享相同的代码,但它们代表不同配置

例如,所有调试工具都已启用开发环境。在里面prod一个,该应用程序针对性能进行了优化。

从一个环境切换到另一个环境可以通过改变来完成app_env.环境变量。

当您部署到SymfonyCloud时,环境ob娱乐下载(存储在ob直播appapp_env.)自动切换到prod

管理环境配置

app_env.可以使用终端中使用“真实”环境变量来设置:

1
$出口app_env.=开发

使用真实环境变量是设置值的首选方法app_env.在生产服务器上。但是在开发机上,必须定义许多环境变量可能是麻烦的。相反,定义它们.env.文件。

一个明智的.env.创建项目时,将自动生成文件:

.env.
1 2 3 4 5 6
###> ob娱乐下载symfony / framework-bundle ### app_env = dev app_secret = c2927f273163f7225a358e3a1bbbebed8a#trusted_proxies = 127.0.0.1,127.0.0.2 #trusted_hosts ='^ localhost | example \ .com $'### 
               

小费

由于Symfony Flex使用的配方,任何包都可以将更多的环境变量添加到此文件中。ob娱乐下载

.env.文件已提交给存储库并描述默认生产中的价值观。您可以通过创建一个来覆盖这些值.env.local.文件。此文件不应该提交,这就是为什么.gitignore.文件已经忽略了它。

切勿在这些文件中存储秘密或敏感值。我们将在另一步中看到如何管理秘密。

记录所有的东西

开箱即用,记录和调试功能有限于新项目。让我们添加更多工具来帮助我们调查开发问题,也可以在生产中调查:

1
$ ob娱乐下载symfony composer req logger

对于调试工具,让我们只在开发中安装它们:

1
$ ob娱乐下载symfony composer req debug --dev

发现Symfony调试工具ob娱乐下载

如果刷新主页,您现在应该看到屏幕底部的工具栏:

你可能注意的第一件事是404.红色的。请记住,此页面是我们未定义主页的占位符。即使欢迎您的默认页面是美丽的,它仍然是一个错误页面。因此,正确的HTTP状态代码为404,而不是200.由于Web调试工具栏,您可以立即提供信息。

如果单击小的感叹号,则将“真实”异常消息作为Symfony Profiler中的日志的一部分获取。ob娱乐下载如果要查看堆栈跟踪,请单击左侧菜单上的“异常”链接。

每当您的代码有问题时,您将看到一个异常页面,如下所示,您可以为您提供所需的所有问题以及它来自哪里:

需要一些时间来通过单击浏览Symfony Profiler内的信息。ob娱乐下载

日志在调试会话中也非常有用。ob娱乐下载symfony有一个方便的命令来尾笔所有日志(来自Web服务器,PHP和您的应用程序):

1
$ ob娱乐下载symfony服务器:日志

让我们做一个小实验。打开公共/ index.php.并打破那里的PHP代码(在代码的中间添加foobar)。刷新浏览器中的页面并观察日志流:

1 2
12月21日10:04:59 |调试|PHP PHP解析错误:语法错误,意外'使用'(t_use)在第5行的公共/ index.php中,path =“/ usr / bin / php7.42”php =“7.42.0”12月21日10:04:59|错误|服务器Get(500)/ IP =“127.0.0.1”

输出精美着色,以引起您的注意。

另一个伟大的调试帮助者是symfonyob娱乐下载倾倒()功能。它始终可用,并允许您以良好且交互式的格式转储复杂变量。

暂时改变公共/ index.php.转储请求对象:

patch_file.
1 2 3 4 5 6 7 8 9 10 11
--- A / public / index.php+++ b / public / index.php@@ -18,5 +18,8 @@ if($ _server ['app_debug']){$内核=新内核($ _服务器['app_env'],(bool)$ _server ['app_debug']);$请求=请求:: createfromglobals();$ response = $ kernel->句柄($请求);++转储($申请);+$ respons-> send();$内核 - >终止($请求,$响应);

刷新页面时,请注意工具栏中的新“目标”图标;它让你检查转储。单击它以访问导航的完整页面更简单:

在进行此步骤中完成的其他更改之前还原更改:

1
$ git checkout public / index.php

配置您的IDE

在开发环境中,当抛出异常时,Symfony将显示一个页面,其中包含异常消息及其堆栈跟踪。ob娱乐下载显示文件路径时,它会添加一个链接,该链接在您喜欢的IDE中以右侧打开文件。要从此功能中受益,您需要配置IDE。ob娱乐下载symfony支持盒子里的许多ides;我正在使用此项目的Visual Studio代码:

patch_file.
1 2 3 4 5 6 7
--- a / php.ini+++ b / php.ini@@ -6,3 +6,4 @@ max_execution_time = 30session.use_strict_mode =上realpath_cache_ttl = 3600 zend.detect_unicode =关闭+ xdebug.file_link_format = vscode:// file /%f:%l

链接文件不限于异常。例如,在配置IDE后,Web调试工具栏中的控制器就会成为可点击的。

调试生产

调试生产服务器总是棘手的。例如,您无法访问Symfony Profiler。ob娱乐下载日志较少冗长。但是可以拖尾日志:

1
$ ob娱乐下载symfony日志

您甚至可以通过Web容器上的SSH连接:

1
$ ob娱乐下载symfony ssh.

别担心,你不能轻易打破。大多数文件系统都是只读的。您将无法在生产中进行热固性。但是你将在这本书中学习一个更好的方式。


这项工作包括代码样本,是在a下获得的许可Creative Commons By-NC-SA 4.0执照。