故障排除问题

故障排除问题

建立项目还需要使用正确的工具来调试问题。幸运的是,许多不错的助手已经包括在webapp包中。

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

首先,当您需要找到问题的根源时,Symob娱乐下载fony Profiler可以节省时间。

如果你看一下主页,你应该在屏幕底部看到一个工具栏:

/

你可能会注意到的第一件事是404红色的。记住,这个页面是一个占位符,因为我们还没有定义主页。即使欢迎你的默认页面很漂亮,它仍然是一个错误页面。所以正确的HTTP状态代码是404,而不是200。感谢web调试工具栏,你有信息马上。

如果单击小感叹号,就会在Symfony分析器的日志中得到“真正的”异常消息。ob娱乐下载如果您想查看堆栈跟踪,请单击左侧菜单上的“Exception”链接。

当你的代码出现问题时,你会看到一个如下所示的异常页面,它为你提供了所有你需要了解的问题及其来源:

//

花点时间浏览一下Symfony分析器内部的信息。ob娱乐下载

日志在调试会话时也非常有用。ob娱乐下载Symfony有一个方便的命令来跟踪所有的日志(从web服务器,PHP和你的应用程序):

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

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

1 2
12月21日10:04:59 |DEBUG| PHP PHP解析错误:语法错误,意外的'使用' (T_USE) in public/index.php on line 5 path="/usr/bin/php7.42" PHP ="7.42.0" 12月21日10:04:59 | error | SERVER GET (500) / ip="127.0.0.1"

输出的颜色很漂亮,可以让您注意错误。

理解Symfony环境ob娱乐下载

由于Symfoob娱乐下载ny Profiler只在开发期间有用,所以我们希望避免在生产环境中安装它。默认情况下,Symfonob娱乐下载y仅为dev而且测验环境。

ob娱乐下载Symfony支持的概念环境.默认情况下,它内置了三个支持,但你可以随心所欲地添加:dev刺激,测验.所有环境共享相同的代码,但它们表示不同的代码配置

例如,所有调试工具都在dev环境。在刺激首先,应用程序针对性能进行了优化。

从一个环境切换到另一个环境可以通过更改APP_ENV环境变量。

当您部署到Platform.sh时,环境(存储在APP_ENV)自动切换至刺激

管理环境配置

APP_ENV可以通过在终端中使用“真正的”环境变量来设置:

1
出口APP_ENV = dev

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

一个明智的.env当项目创建时自动为您生成文件:

.env
1 2 3 4 5 6
#TRUSob娱乐下载TED_HOSTS='^localhost|example\.com$' ### symfony/framework-bundle ### # APP_ENV=dev APP_SECRET=c2927f273163f7225a358e3a1bbbed8a # trusted_proxy =127.0.0.1,127.0.0.2 #TRUSTED_HOSTS='^localhost|example\.com$

提示

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

.env文件提交到存储库,并描述默认的来自生产的价值。属性可以覆盖这些值.env.local文件。这个文件不应该被提交,这就是为什么.gitignore文件已经忽略了它。

不要在这些文件中存储机密或敏感值。我们将在另一个步骤中看到如何管理秘密。

配置IDE

在开发环境中,当抛出异常时,Symfony将显示带有异常消息及其堆栈跟踪的页面。ob娱乐下载当显示文件路径时,它会添加一个链接,在您最喜欢的IDE中的右行打开该文件。为了从这个特性中获益,您需要配置IDE。ob娱乐下载Symfony支持许多开箱即用的ide;我在这个项目中使用Visual Studio代码:

1 2 3 4 5 6 7
——/ php . ini+ + + b / php . ini@@ -6,3 +6,4 @@ max_execution_time=30会话。use_strict_mode=On realpath_cache_ttl=3600 zend.detect_unicode=Off+ xdebug.file_link_format = vscode: / /文件/ % f: % l

链接文件不限于异常。例如,配置IDE后,web调试工具栏中的控制器变成可单击的。

调试生产

调试生产服务器总是比较棘手。例如,您无法访问Symfony分析器。ob娱乐下载日志不那么冗长。但追踪日志是可能的:

1
ob娱乐下载Syob直播appmfony云:原木——尾部

你甚至可以通过SSH在web容器上连接:

1
ob娱乐下载syob直播appmfony云:ssh

别担心,你不可能轻易打破任何东西。文件系统的大部分是只读的。您将无法在生产中进行热修复。但是在书的后面你会学到更好的方法。

此工作,包括代码示例,是根据知识共享协议BY-NC-SA 4.0许可证。