У нас есть настроенные конечные точки, которые выполняют различные действия, к которым мы получаем доступ через /wp/wp-admin/admin-ajax.php?action=some_action
Однако всякий раз, когда в процессе разработки возникает ошибка, такая как синтаксис, логика, фатальная ошибка и т. Д., Мы просто получаем «500 Internal Server Error» при просмотре страницы в браузере.
Каждая другая страница на сайте, когда есть ошибка, дает нам ошибку PHP, чтобы помочь нам отладить.
Однако, когда ошибка исходит от admin-ajax.php
область, мы должны затем открыть наш файл журнала PHP, чтобы увидеть ошибку вместо этого — что больше боли при активной разработке
Есть ли что-то в WordPress, что отключает отображение ошибок в этом пространстве имен URL? и если да, то как мы можем предотвратить это, чтобы разрешить отображение ошибок в браузере?
Если вы хотите увидеть ошибки PHP при использовании ajax, откройте файл 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 );
}
в
if ( defined( 'XMLRPC_REQUEST' ) || defined( 'REST_REQUEST' ) || ( defined( 'WP_INSTALLING' ) && WP_INSTALLING ) || wp_doing_ajax() ) {
@ini_set( 'display_errors', 1 );
}
Теперь вы сможете увидеть ошибки 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 );
Определите следующие константы как таковые. Вы сможете увидеть debug.log
под wp-content
, Я обычно тоже отключаю отображение отладки, потому что это вызывает проблему с уже отправленными заголовками.
РЕДАКТИРОВАТЬ:
Таким образом, по-видимому, отчеты об ошибках отключены для запросов AJAX в последней строке метода wp_debug_mode()
в wp-includes/load.php
if ( defined( 'XMLRPC_REQUEST' ) || defined( 'REST_REQUEST' ) || ( defined( 'WP_INSTALLING' ) && WP_INSTALLING ) || wp_doing_ajax() ) {
@ini_set( 'display_errors', 0 );
}