我们已经设置了一些自定义端点来执行各种操作,我们通过/wp/wp-admin/admin-ajax.php?action=some_action
访问这些端点
然而,当我们在开发过程中出现错误时,例如语法,逻辑,致命等,我们在浏览器中查看页面时只会得到“500内部服务器错误”。
当网站上的其他页面出现错误时,它会给我们PHP错误,以帮助我们调试。
但是,当错误来自admin-ajax.php
区域时,我们必须打开PHP日志文件来查看错误-这在积极开发时更是一种痛苦
WordPress中是否有禁止显示此URL名称空间上的错误的东西?如果是这样,我们如何防止这种情况,以允许在浏览器上呈现错误?
5条答案
按热度按时间0dxa2lsx1#
x1c 0d1x如果你想在 AJAX 时看到PHP错误,打开wp-includes/load.php文件&在第336行,修改这一行:
到
现在你可以在浏览器控制台中看到 AJAX 错误了。请记住在调试完成后撤消此操作!
blmhpbnm2#
更好的解决方案
在错误发生前启用PHP错误输出
添加此选项以启用PHP错误输出
例:在本例中,在 AJAX 回调函数的开始
提示:
您可以使用Dev Tools Network中Response选项卡旁边的Preview选项卡来呈现Error输出中的HTML。这样你就可以看到没有HTML的错误
说明
我不知道为什么WordPress不允许启用此错误输出,但我不认为编辑WordPress核心文件并在调试后撤消它们不是一个好主意,因为回答here
从这个答案中,我发现我们只需要将
display_errors
PHP init设置为true
或1
就可以输出错误。那么为什么我们不把它设置在任何我们希望它工作的地方,这样这个
display_errors
就只在那个范围内启用了。如果你不像其他答案那样撤消这个就没有问题
svmlkihl3#
编辑
wp-includes/class-wp-fatal-error-handler.php
并在display_default_error_template( $error, $handled )
中进行更改(行:193):到
然后使用开发工具预览
admin-ajax.php
的HTML响应。hfyxw5xn4#
https://codex.wordpress.org/Debugging_in_WordPress
定义如下常量。您将能够在
wp-content
下看到debug.log
。我通常也会关闭调试显示,因为它会导致已经发送的头出现问题。编辑:
因此,很明显,在
wp-includes/load.php
中的方法wp_debug_mode()
的最后一行中, AJAX 请求的错误报告被关闭了。waxmsbnn5#
要 AJAX 调用启用调试模式,您可以通过在
/* That's all, stop editing! Happy publishing. */
行之前添加以下行来编辑wp-config.php
:这会阻止WordPress干扰错误报告。(参见
wp-includes/load.php
中函数wp_debug_mode
的注解。)现在您已经有了调试模式的默认PHP设置。要自己控制设置,请将以下行添加到
wp-config.php
文件中:恭喜!你已经成功地规避了WordPress处理错误,现在完全控制了自己。