Owe*_*wen 4 php wordpress development-environment error-suppression
我们已经设置了一些自定义端点来执行各种操作,可以通过以下方式访问 /wp/wp-admin/admin-ajax.php?action=some_action
但是,只要在开发过程中出现错误(例如语法,逻辑错误,致命错误等)时,在浏览器中查看页面时,我们都只会收到“ 500 Internal Server Error”。
该站点上的每个其他页面出现错误时,都会向我们显示PHP错误,以帮助我们进行调试。
但是,当错误出自该admin-ajax.php区域时,我们必须打开我们的PHP Log文件来查看错误,这在积极开发时会更加痛苦
wordpress中是否有某些东西禁止在此URL名称空间上显示错误?如果是这样,我们如何防止这种情况允许在浏览器中呈现错误?
ABH*_*BHi 12
在错误发生之前启用 PHP 错误输出
添加此选项以启用 PHP 错误输出
@ini_set( 'display_errors', 1 );
Run Code Online (Sandbox Code Playgroud)
例如:在本例中 ajax 回调函数的开始处
您可以使用开发工具网络中“响应”选项卡旁边的“预览”选项卡在错误输出中呈现 HTML。这样您就可以在没有 HTML 的情况下看到错误
我不知道为什么 WordPress 不允许启用此错误输出,但我不认为编辑 WordPress 核心文件并在调试后撤消它们并不是一个好主意,如此处所回答
从这个答案中,我发现我们只需将display_errorsPHP 初始化设置设置为true或1
即可输出错误。
那么,为什么我们不将其设置在我们希望其工作的任何地方,以便display_errors仅对该范围启用此功能。
如果您没有像其他答案那样撤消此操作,则没有问题
如果要在使用ajax时看到PHP错误,请打开wp-includes / load.php文件并在336行上,更改此行:
if ( defined( 'XMLRPC_REQUEST' ) || defined( 'REST_REQUEST' ) || ( defined( 'WP_INSTALLING' ) && WP_INSTALLING ) || wp_doing_ajax() ) {
@ini_set( 'display_errors', 0 );
}
Run Code Online (Sandbox Code Playgroud)
至
if ( defined( 'XMLRPC_REQUEST' ) || defined( 'REST_REQUEST' ) || ( defined( 'WP_INSTALLING' ) && WP_INSTALLING ) || wp_doing_ajax() ) {
@ini_set( 'display_errors', 1 );
}
Run Code Online (Sandbox Code Playgroud)
现在,您将能够在浏览器控制台中看到Ajax错误。完成调试后,请记住撤消此操作!
https://codex.wordpress.org/Debugging_in_WordPress
// Enable WP_DEBUG mode
define( 'WP_DEBUG', true );
// Enable Debug logging to the /wp-content/debug.log file
define( 'WP_DEBUG_LOG', true );
// Disable display of errors and warnings
define( 'WP_DEBUG_DISPLAY', false );
Run Code Online (Sandbox Code Playgroud)
照此定义以下常量。您将能够debug.log在下面看到wp-content。我通常也会关闭调试显示,因为它会导致标头已发送问题。
编辑:
wp_debug_mode()显然,在该方法的最后一行中,ajax 请求的错误报告已关闭wp-includes/load.php
if ( defined( 'XMLRPC_REQUEST' ) || defined( 'REST_REQUEST' ) || ( defined( 'WP_INSTALLING' ) && WP_INSTALLING ) || wp_doing_ajax() ) {
@ini_set( 'display_errors', 0 );
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3485 次 |
| 最近记录: |