在Wordpress 4.9+中显示来自admin-ajax.php的PHP错误

我们设置了一些自定义终结点,这些终结点可以执行各种操作,我们通过以下方式访问这些终结点/wp/wp-admin/admin-ajax.php?action=some_action

但是,每当我们在开发过程中出现错误时,例如语法,逻辑,致命等,我们在浏览器中查看页面时只会得到“500内部服务器错误”。

当网站上的每隔一个页面出现错误时,它会给我们PHP错误,以帮助我们调试。

但是,当错误来自该区域时,我们必须打开PHP日志文件以查看错误 - 这在积极开发时更痛苦admin-ajax.php

Wordpress中是否有某些内容禁止在此URL命名空间上显示错误?如果是这样,我们如何防止这种情况以允许在浏览器上呈现错误?


答案 1

enter image description here如果你想在使用ajax时看到PHP错误,打开wp-include/load.php file &在第336行,更改以下行:

if ( defined( 'XMLRPC_REQUEST' ) || defined( 'REST_REQUEST' ) || ( defined( 'WP_INSTALLING' ) && WP_INSTALLING ) || wp_doing_ajax() ) {
        @ini_set( 'display_errors', 0 );
    }

if ( defined( 'XMLRPC_REQUEST' ) || defined( 'REST_REQUEST' ) || ( defined( 'WP_INSTALLING' ) && WP_INSTALLING ) || wp_doing_ajax() ) {
        @ini_set( 'display_errors', 1 );
    }

现在,您将能够在浏览器控制台中看到 ajax 错误。请记住在完成调试后撤消此操作!


答案 2

更好的解决方案

在错误发生之前启用 PHP 错误输出

添加此项以启用 PHP 错误输出

@ini_set( 'display_errors', 1 );

例如:在这种情况下,在ajax回调函数的开头

提示:

可以使用开发人员工具网络中“响应”选项卡旁边的“预览”选项卡在“错误”输出中呈现 HTML。以便您可以在没有 HTML 的情况下看到错误

Image

解释

我不知道为什么WordPress不允许启用此错误输出,但我不认为编辑WordPress Core文件并在调试后撤消它们不是一个好主意,正如这里所回答的那样

从这个答案中,我发现我们只需要将PHP init设置设置为或以便输出错误。display_errorstrue1

那么,我们为什么不在希望它工作的任何位置设置它,以便仅为该 scop 启用此功能。display_errors

如果您没有撤消此操作,则没有问题,就像其他答案一样


推荐