Wordpress 4.9+에서 admin-ajax.php의 PHP 오류 표시
다양한 작업을 수행하는 커스텀 엔드포인트가 몇 개 설정되어 있으며, 이를 통해 액세스합니다./wp/wp-admin/admin-ajax.php?action=some_action
그러나 구문, 논리, 치명적 등의 오류가 발생할 때마다 브라우저에서 페이지를 볼 때 단순히 "500 내부 서버 오류"가 발생합니다.
사이트상의 다른 페이지마다 오류가 발생하면 디버깅에 도움이 되도록 PHP 오류가 표시됩니다.
단, 에러가 발생한 경우admin-ajax.php
그런 다음 PHP 로그 파일을 열어 오류를 대신 확인해야 합니다. 이는 현재 개발 중인 PHP 로그 파일보다 더 큰 문제입니다.
이 URL 네임스페이스에서 오류 표시를 비활성화하는 wordpress가 있습니까?만약 그렇다면 브라우저에 오류가 렌더링되도록 하려면 어떻게 해야 할까요?
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 );
}
로.
if ( defined( 'XMLRPC_REQUEST' ) || defined( 'REST_REQUEST' ) || ( defined( 'WP_INSTALLING' ) && WP_INSTALLING ) || wp_doing_ajax() ) {
@ini_set( 'display_errors', 1 );
}
이제 브라우저 콘솔에서 Ajax 오류를 볼 수 있습니다.디버깅이 끝나면 반드시 실행 취소해 주세요!
뛰어난 솔루션
오류가 발생하기 전에 PHP 오류 출력 사용
PHP 오류 출력을 사용하려면 이 항목을 추가하십시오.
@ini_set( 'display_errors', 1 );
예: 이 경우 ajax 콜백 함수 시작 시
힌트:
개발 도구 네트워크의 응답 탭 옆에 있는 미리 보기 탭을 사용하여 오류 출력에서 HTML을 렌더링할 수 있습니다.HTML 없이도 에러를 볼 수 있도록
설명.
WordPress가 이 오류 출력을 활성화하지 않는 이유는 알 수 없지만 WordPress Core 파일을 편집하고 디버깅한 후 실행 취소하는 것은 여기서 대답한 바와 같이 좋은 생각이 아닙니다.
그 대답으로부터, 나는 우리가 단지 그것을 설정하기만 하면 된다는 것을 알았다.display_errors
PHP 초기화 설정true
또는1
에러를 출력하기 위해서입니다.
그러니까 우리가 하고 싶은 대로 설정해두면 어떨까?display_errors
는, 그 스코프에 대해서만 유효하게 됩니다.
다른 답변과 달리 실행 취소하지 않으셔도 문제 없습니다.
편집wp-includes/class-wp-fatal-error-handler.php
이것을 변경해 주세요.display_default_error_template( $error, $handled )
(행: 193):
$message = sprintf(
'<p>%s</p><p><a href="%s">%s</a></p>',
$message,
/* translators: Documentation explaining debugging in WordPress. */
__( 'https://wordpress.org/support/article/debugging-in-wordpress/' ),
__( 'Learn more about debugging in WordPress.' )
);
로.
$message = sprintf(
'<p>%s</p><p><a href="%s">%s</a></p>',
$message . ' ' . json_encode($error),
/* translators: Documentation explaining debugging in WordPress. */
__( 'https://wordpress.org/support/article/debugging-in-wordpress/' ),
__( 'Learn more about debugging in WordPress.' )
);
그런 다음 HTML 응답을 미리 봅니다.admin-ajax.php
개발 도구를 사용합니다.
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
디버깅 표시도 이미 송신된 헤더의 문제를 일으키기 때문에, 통상, 디버깅 표시도 오프인 채로 합니다.
편집:
때문에, 에러 는, 「」 행에 가 되어 것이 합니다.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 );
}
언급URL : https://stackoverflow.com/questions/49489131/displaying-php-errors-from-admin-ajax-php-in-wordpress-4-9
'programing' 카테고리의 다른 글
WordPress paginate_links - 사용방법 (0) | 2023.02.26 |
---|---|
Angular.js 및 ASP넷 MVC 4 (0) | 2023.02.26 |
'security.basic.enabled' 속성은 사용되지 않습니다.보안 자동 구성은 커스터마이즈할 수 없습니다. (0) | 2023.02.26 |
echo를 사용한 워드프레스 vs 쇼트코드 함수 반환 (0) | 2023.02.26 |
Jest 및/또는 효소를 사용하여 React 구성요소에 중첩된 요소의 속성을 얻는 방법은 무엇입니까? (0) | 2023.02.26 |