WordPress 网站故障排除和调试方法
尽管 WordPress 拥有相对稳定的运行环境,与典型的软件开发相比,出错的几率要小得多,但问题仍然可能出现。
一般而言,工具的灵活性越高,潜在的错误风险就越大。
WordPress 的灵活性很高,因此存在许多潜在问题。它拥有开放的插件系统,可以扩展 CMS 的功能;此外,还有 Web 服务器、托管服务、数据库管理系统和网络等多个组成部分。所有这些都可能成为导致问题的独立因素。
您可能遇到的问题包括网站速度缓慢、内容显示错误或损坏、错误消息,最糟糕的是“白屏死机”(WSoD),这意味着网站崩溃,需要立即处理。
即使是很小的性能问题,例如加载延迟超过 2 秒,也应该引起您的重视。这可能会损害您的 SEO 策略和在搜索引擎结果中的排名,并最终导致访问量减少。在当今时代,快速响应至关重要,尤其是对于移动用户而言。
因此,当您的网站出现异常时,拥有一些可用的工具至关重要。即使是正常运行的网站,也总有改进性能和可用性的空间。
什么是调试?
调试是开发人员用来检测和消除程序中错误的过程。它通过专用工具完成,这些工具可以帮助您观察程序执行过程中的内部状态。
有时,调试中最困难的部分是确定导致错误的具体组件、命令或指令。为此,开发人员需要像医生一样分析症状,并进行调查以确定根本原因。在软件开发中,这等同于使用监控工具来获取有关网站内部运作的信息。
让我们看看一些可用的选项。
WP_DEBUG
WordPress 内置了一个常用的调试辅助工具,名为 WP_DEBUG。它是一个开关,启用后会触发 WordPress 的调试模式。启用 WP_DEBUG 后,系统会生成一个日志文件,记录网站的所有活动。通过查看此日志,您可以发现 WordPress 网站上存在的问题。
要启用 WP_DEBUG,您需要编辑 wp-config.php
文件,并添加必要的代码,指示网站将所有活动记录到日志中。请务必小心,因为在编辑 wp-config.php
文件时,哪怕是一行或一个字符的错误都可能导致网站停止工作。在操作前,请务必备份您的网站和文件。如果出现问题,您可以恢复备份。
您可以使用托管服务的文件管理器或 FTP 客户端下载 wp-config.php
文件,然后使用文本编辑器在本地打开它。该文件位于 WordPress 安装的根目录下。找到定义 WP_DEBUG 的行,它应该是这样的:
define( 'WP_DEBUG', false );
如果没有找到这一行,请搜索以下注释:
/* That’s all, stop editing! Happy blogging. */
在这行注释上方添加以下代码。这些命令指示网站记录所有错误,但不在屏幕上显示,这对于公开网站很有用:
define('WP_DEBUG', true);
define('WP_DEBUG_LOG', true);
define('WP_DEBUG_DISPLAY', false);
@ini_set('display_errors',0);
保存修改后的文件,如果使用 FTP,则将其上传到网站。然后尝试引发错误(或等待错误发生),并查看 debug.log
文件。它位于 WordPress 安装的 wp-content
文件夹中。您可以使用文本编辑器打开它,查找揭示网站问题的错误消息。
完成后,您应该将 wp-config.php
文件中所有添加或修改的行的 true
值更改为 false
,以关闭日志记录。
WPDB 错误报告
如果您知道或怀疑网站的数据库存在问题,您可以启用 WPDB 错误报告。这同样需要一些编程知识。启用后,网站会在屏幕上显示数据库错误。
除非您不在乎访问者是否看到错误消息,否则不应在生产网站上启用此功能。最好使用一个测试网站(稍后介绍)来进行测试,而不会影响实际的用户。
解读错误报告或日志需要一定的技术知识,就像解读 X 光片需要医学知识一样。您需要理解一些编程、网络或数据库术语,但您可能能找到影响网站的根本问题,并寻求专业人士的帮助。
要生成数据库错误报告,请将以下行添加到 wp-config.php
文件中(方式与之前解释的调试日志相同):
define( 'SAVEQUERIES', true);
将此值设置为 true 后,数据库将开始存储您网站执行的所有查询。然后,您可以查看每个页面请求触发的查询数量,以及每个请求中使用的命令。在屏幕上显示查询的一种方法是在主题的 PHP 文件中添加以下代码:
global $wpdb;
print_r( $wpdb->queries );
完成调试后,请删除这些代码,以恢复网站的正常运行。
使用测试网站
测试网站是您实际网站的克隆,您可以在其中测试更改或新功能,然后再将其部署到实际网站。使用测试网站来调试问题或监控网站行为也是一个好主意,因为您可以自由尝试任何操作,而不会影响实际用户。
确保测试网站与实际网站的内容和结构一致非常重要。每次使用新内容或插件(尤其是插件和主题)更新 WordPress 站点时,您都应使用实际站点的副本刷新您的测试站点。这样,如果您的实际网站出现问题,您可以在测试环境中重现该问题。
许多托管服务提供商会提供一个测试网站作为其付费计划的一部分。这是拥有测试环境最便捷的方式。如果您的托管服务提供商没有提供此选项,您可以使用 WP Staging 插件。此插件可以轻松克隆您的网站,以便您像使用真实网站一样使用克隆版本。您会始终知道自己是否处于测试环境中,因为屏幕顶部会显示一个橙色条。
如果您喜欢亲自动手,您可以在子域名上手动创建测试站点。但这可能有点复杂,如果您是 WordPress 初学者,则最好使用其他方法。
查询监视器
查询监视器 不仅仅监控查询。它是一个全面的 WordPress 开发人员面板,可以调试脚本、样式表、API 调用、数据库查询、PHP 错误等。高级功能还允许您调试 Ajax 调用并执行用户能力检查。
安装并激活后,查询监视器将开始以有用的方式显示有关您网站行为的信息。
例如,它按触发它们的函数、插件或主题分组显示聚合的数据库查询。管理工具栏菜单显示当前页面的实时统计信息,以及评估您需要解决的问题可能需要的所有调试信息。
通过使用查询监视器,您可以逐步缩小错误范围,直到找到导致网站性能下降或发生故障的错误。与 WordPress 一样,查询监视器是完全免费和开源的。
以前称为萤火虫, 火狐开发者工具 是专为开发人员量身定制的特殊版本 Firefox,提供最新的开发功能和工具。它并不特定于 WordPress,但它对于调试网站非常有用。
将 Firefox 开发工具与流行的 Chrome 开发工具进行比较是不可避免的。在这种比较中,Firefox 的合理布局脱颖而出。例如,您可以右键单击任何元素以拉出检查器选项卡,并且 Web 控制台在打印对象时提供更丰富的输出,显示的信息远不止其名称。它为某些类型提供了额外的信息,可以详细检查对象的属性并为 DOM 元素提供更丰富的信息。
使用 Inspector 工具,您可以检查和修改页面 HTML 和 CSS,可以在 Firefox 或远程设备(如 Android 版 Firefox)上本地加载的页面上执行此操作。
Web 控制台显示了您可能需要的关于网页的所有信息:JavaScript、网络请求、CSS、警告、错误消息和 JavaScript 代码显式记录的消息。它还允许您通过在页面上下文中直接执行 JavaScript 表达式与网页进行交互。
New Relic
作为 APM(应用程序性能监控)行业的领导者之一, New Relic 是一款商业产品,全球有数百万开发人员每天使用它来获取软件产品性能的见解。它有一个插件架构,允许第三方添加功能,因此可以监控几乎无限的技术。
它的价格从每台主机每月 9.37 美元到 200 美元不等,适用于专业调试任务。它还有一个较长的学习曲线,因此除了花钱购买解决方案外,您还需要投入时间来学习如何使用它。New Relic 的用户赞赏它能轻松集成到 APM 和基础设施监控应用程序中。
Kinsta 允许您从 MyKinsta 仪表板轻松集成 New Relic。
调试栏
调试栏 是一组可以通过 WordPress 管理栏中的调试菜单访问的插件,它显示各种调试信息。它的选项包括控制台、短代码、常量、文章类型、cron、操作和过滤器、瞬态、远程请求以及脚本和样式依赖项列表。它是一个开源插件,可以免费使用。
主插件 Debug Bar 提供了基本功能,其余插件扩展了这些功能。它与 WordPress 提供的内置调试标志一起使用,例如 WP_DEBUG 和 SAVEQUERIES。当这些标志处于活动状态时,Debug Bar 会添加有用的调试信息,例如 PHP 警告和 MySQL 查询,从而避免您查找和读取日志文件的麻烦。
调试栏菜单中的每个选项都提供了它的调试功能。例如,控制台提供了一个控制台,您可以在其中运行任意 PHP 代码,这对于测试变量的内容非常有用。 Cron 显示有关 WordPress 计划事件的信息,例如下一个事件的时间、计划事件的数量、自定义计划事件的列表等。操作和过滤器是显示附加到当前请求的钩子的另一种选项。 Actions 选项卡显示与当前请求挂钩的操作,而 Filters 选项卡显示所有过滤器标签,以及附加到每个标签的函数。
面向所有人的调试
调试工具主要是为软件开发专业人士设计的。但是,即使您不是开发人员,如果您只是维护一个 WordPress 博客,那么至少对如何监控和调试您的网站有基本的了解也是很有用的。通过这样做,您可以为开发人员提供一些信息,帮助他或她找到问题的根源。同时,如果您感到不适,您可以自己测量体温,为您的医生减轻一些工作。
学习一些作为 WordPress 专业人士赚钱的方法。