我们已经设置了一些自定义端点来执行各种操作,我们可以通过 /wp/wp-admin/admin-ajax.php?action=some_action
然而,每当我们在开发过程中出现错误时,例如语法、逻辑、致命等,我们只会得到“500 Internal Server Error”
站点上的每个其他页面出现错误时,都会向我们提供 PHP 错误。
然后我们必须打开我们的 PHP 日志文件来查看错误。
wordpress 中是否有禁止在这些 URL 上显示错误的功能? 如果是这样,我们如何防止这种情况发生,以便在浏览器上呈现错误?
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
正在设置。
要解决此问题,您需要按照@Friss 的建议在 ajax 函数调用顶部手动打开错误报告。
您可以尝试在游览脚本文件的最顶部添加这两行
error_reporting(E_ALL);
ini_set("display_errors", 1);
它告诉 php 报告所有类型的错误并覆盖其默认设置以显示它们。
