显示admin-ajax.php中的PHP错误

时间:2018-03-26 作者:owenmelbz

我们已经设置了一些自定义端点,可以执行各种操作,我们可以通过/wp/wp-admin/admin-ajax.php?action=some_action

然而,每当我们在开发过程中出现错误,如语法、逻辑、致命错误等,我们只会得到“500内部服务器错误”

当站点上的其他页面出现错误时,它会向我们提供PHP错误。

然后,我们必须打开PHP日志文件来查看错误。

wordpress中是否有禁止在这些URL上显示错误的内容?如果是这样,我们如何防止这种情况发生,以便在浏览器上呈现错误?

3 个回复
SO网友:Rahil Wazir

WordPress默认情况下隐藏ajax请求调用的错误。这可以从源文件中确认wp-includes/load.php#L352, 此处:

if ( defined( \'XMLRPC_REQUEST\' ) || defined( \'REST_REQUEST\' ) || ( defined( \'WP_INSTALLING\' ) && WP_INSTALLING ) || wp_doing_ajax() ) {
    @ini_set( \'display_errors\', 0 );
}
查看函数wp_doing_ajax() 在条件语句中使用,因此display_errors 正在设置。

为了解决这个问题,您需要在ajax函数调用的顶部手动打开错误报告,如@Friss.

SO网友:Friss

您可以尝试在教程脚本文件的最顶端添加这两行

error_reporting(E_ALL); 
ini_set("display_errors", 1);
它告诉php报告所有类型的错误,并覆盖其默认设置以显示它们。

SO网友:codiiv

您可以尝试WP\\u Ajax\\u响应

$response = array(
   \'what\'=>\'stuff\',
   \'action\'=>\'delete_something\',
   \'id\'=>new WP_Error(\'oops\',\'I had an accident.\'),
   \'data\'=>\'Whoops, there was a problem!\'
);
$xmlResponse = new WP_Ajax_Response($response);
$xmlResponse->send();
阅读更多信息https://codex.wordpress.org/Function_Reference/WP_Ajax_Response

结束

相关推荐

Stop admin-ajax?

是否可以简单地禁用/停止admin-ajax.php 从跑步开始?已搜索WordPress文档。已经搜索过谷歌。已搜索此论坛。找不到答案。也尝试过这个,但不起作用:function stop_ajax() { define( \'DOING_AJAX\', false ); } add_action( \'admin_init\', \'stop_ajax\' );