WordPress 디버깅: 필수 가이드

게시 됨: 2021-02-11

당신이 워드프레스 개발자의 수준에 관계없이 끊임없이 직면하게 될 한 가지 문제가 있습니다. 바로 버그입니다. 가장 노련한 개발자라도 버그를 생성하지 않는 방식으로 일관되게 코딩할 수는 없습니다. 사실 WordPress를 디버깅하면 실제로 플랫폼에 대해 더 많이 배울 수 있습니다!

이전 프로그래밍 경험이 있는 경우 컴파일 또는 런타임 시 오류가 발생했을 가능성이 있습니다. 수건을 던지고 프로젝트를 포기하지 않는 한, 코드를 실행하고 문제를 추적하는 데 시간을 할애할 가능성이 있습니다. WordPress의 동적 기능은 동일합니다.

일반적인 프로그래밍 언어로 프로그래밍할 때와 달리 WordPress 오류는 페이지에 단순히 인쇄되지 않습니다. 디버그 로그에는 종종 데이터베이스에 대한 자격 증명과 같은 민감한 정보가 포함되기 때문입니다. 대신 WordPress는 해당 로그를 공개적으로 액세스할 수 없는 서버의 파일에 삭제합니다.

다행히도 미 육군이 개발한 30톤 무게의 컴퓨터와 달리 이 작업을 수행하기 위해 말 그대로 기계에서 죽은 벌레를 제거할 필요가 없습니다! 이제 몇 가지 컨텍스트가 있으므로 WordPress 디버그 프로세스에 적용되는 내용을 보다 기술적으로 살펴보겠습니다.

WordPress 디버그 설명

아시다시피 WordPress는 PHP를 사용하여 개발되었습니다. 즉, 디버깅에 대한 공식 WordPress 가이드와 공식 PHP 디버깅 가이드가 도움이 되는 훌륭한 리소스가 될 것입니다.

디버깅을 하려면 워드프레스에 전역 PHP 변수가 정의되어 있어야 합니다. 다음 섹션에서 그 방법을 정확히 살펴보겠습니다.

PHP 디버깅 프로세스가 WordPress 디버그 프로세스와 어떻게 다른지 구별하는 것이 중요합니다. 바닐라 PHP에서는 기본적으로 두 가지 유형의 오류만 표시됩니다. 하나는 "치명적인 오류"로 페이지를 로드할 수 없을 정도로 심각합니다. 다른 하나는 "민감한 치명적 오류"가 있는 경우 단순히 사용자에게 빈 페이지를 표시하는 것입니다. 다시 말해, PHP는 전체 오류 메시지를 출력하는 것이 보안 위험을 초래할 수 있다는 것을 알고 있습니다. 이러한 설정은 PHP 자체에서 쉽게 수정할 수 있습니다.

반면에 워드프레스는 디버깅과 관련하여 조금 더 말이 많습니다. 단순히 WordPress 디버깅을 활성화하고 사용자 지정하지 않으면 모든 수준의 오류, 경고 및 개발자를 위한 정보 항목이 표시됩니다. 즉, 치명적인 오류에서 JavaScript 섹션을 최적화하는 방법에 대한 기술 메시지에 이르기까지 모든 것이 표시됩니다. 이것은 개발자에게 매우 도움이 되지만 사용자에게 표시하기에 가장 좋은 콘텐츠는 아닐 것입니다.

또 다른 독특한 기능은 더 이상 사용되지 않는 WordPress 관련 PHP 기능에 대한 알림을 받을 수 있다는 것입니다. 더 이상 사용되지 않는 기능은 지금도 작동할 수 있지만 향후 지원이 중단될 것입니다. 이것은 또한 일반적으로 동일한 프로세스를 수행하는 더 빠르고 더 나은 방법이 있음을 의미합니다.

WordPress 디버깅에 관심이 없을 수도 있지만 기능적인 블로그나 사이트를 유지하려면 중요합니다. 그러나 파일 편집을 시작하기 전에 먼저 신뢰할 수 있는 WordPress 백업 플러그인을 사용해야 합니다. 이렇게 하면 실수로 사이트가 작동하지 않게 된 경우 몇 번의 클릭만으로 모든 것을 복원할 수 있습니다!

이제 롤링하는 방법을 살펴보겠습니다!

WordPress에서 디버깅을 어떻게 활성화합니까?

WordPress 디버그 프로세스를 시작하려면 몇 줄의 PHP가 필요합니다.

좋아하는 텍스트 편집기를 실행하십시오(좋아하는 텍스트 편집기가 Windows 메모장이 아닌 한!). 필요한 경우 Notepad++는 거의 모든 프로그래밍 언어를 지원하는 일반적으로 사용되는 오픈 소스 텍스트 편집기입니다.

다음으로 wp-config.php 파일의 사본 을 다운로드하십시오. 원본 파일을 편집하지 마십시오! 완료되면 수정된 버전을 업로드하기만 하면 됩니다.

텍스트 편집기에서 wp-config.php를 연 후에는 다음 코드 줄을 추가해야 합니다. 먼저 검색하여 이미 가지고 있지 않은지 확인하십시오. PHP는 동일한 변수를 두 번 정의하면 매우 불행해집니다!

 define( 'WP_DEBUG', true );

이 코드 라인이 하는 모든 일은 WP_DEBUG라는 전역 PHP 변수를 부울 값 true로 설정하는 것입니다.

마찬가지로 WordPress 디버그 기능을 려면 반대 코드 줄을 넣으면 됩니다.

 define( 'WP_DEBUG', false );

이렇게 하면 디버깅이 켜지지만 출력되는 정보를 찾는 방법을 모르는 경우에는 그다지 도움이 되지 않습니다!

WordPress 디버그 로그는 어디에 있습니까?

이 질문에는 기술적으로 두 가지 답변이 있으며 정확한 답변은 선택에 따라 다릅니다.

우리가 말했듯이 한 가지 방법은 define( 'WP_DEBUG', true ); 이것은 기본 WordPress 디버깅 로그 설정을 사용하여 wp-content/debug.log 위치에 파일이 존재하지 않거나 존재하는 경우 파일에 추가되면 자동으로 생성합니다.

그러나 다른 위치에 원하는 몇 가지 이유가 있습니다. 예를 들어, 타사 디버깅 도구가 액세스할 수 있는 위치에 이를 원할 수 있습니다. 디버깅 로그가 저장되는 위치를 사용자 지정하려면 다음과 같이 디버깅을 활성화할 수 있습니다.

 define( 'WP_DEBUG_LOG', '/best-wp-dev/errors.log' );

WordPress 디버그 로그 설명

WordPress 디버그 로그의 정보 세부 수준은 구성 방법에 따라 다릅니다. 추가 수정 없이 단순히 활성화하면 오류를 일으키거나 더 이상 사용되지 않는 기능을 사용하거나 최적이 아닌 모든 이벤트를 기록하게 됩니다.

WordPress는 PHP를 기반으로 하기 때문에 로그에 모든 PHP 오류와 경고가 표시됩니다. 또한 각 이벤트와 관련된 날짜, 시간 및 IP 주소도 포함됩니다. 불행히도 PHP가 좋아하지 않는 코드 스타일 지정, 강화되어야 한다고 느끼는 데이터 유효성 검사 등과 같은 많은 것들에 대한 PHP의 (매우) 장황한 출력을 보게 될 것입니다.

특히 WordPress 디버깅을 막 시작한 사람들의 경우 로그 파일을 보는 것이 상당히 어려울 수 있습니다. 그러나 몇 가지 항목만 필요하다는 것을 기억해야 합니다.

디버깅 대 로깅

동일한 목표를 달성하는 것을 목표로 하지만 디버깅과 로깅의 차이점을 이해하는 것이 중요합니다. 즉, 라인 define( 'WP_DEBUG', true ); define( 'WP_DEBUG_LOG', true ); 행과 완전히 다른 작업을 수행합니다.

어떤 경우에도 define( 'WP_DEBUG', true ); 대중이 접근할 수 있는 사이트에서. 단독으로 사용하는 경우이 명령은, 단순히 메시지를 디버깅 인쇄됩니다. 이것은 아무 것도 기록하지 않으며 사이트에서 데이터를 훔치는 데 사용할 수 있는 정보를 출력합니다. 견고한 WordPress 보안 플러그인과 함께 이 기능이 켜져 있지 않은지 확인하면 대다수의 사이버 공격 시도를 저지할 수 있습니다.

iThemes 보안(이전의 Better WP Security)

보안 위험 없이 WordPress 디버깅

분명히 사이트를 정기적으로 디버그해야 합니다. 그러나 wp-config.php 파일에서 코드 라인을 지속적으로 추가 및 제거하고 싶지는 않을 것입니다.

프로세스를 통해 생각해보면 먼저 일반적으로 디버깅을 활성화해야 합니다. 그런 다음 수정이 가능하도록 오류를 기록해야 합니다. 그러나 우리는 이러한 오류를 일반 대중에게 보여주고 싶지 않습니다 . 표준 PHP 오류와 WordPress 관련 오류가 모두 표시되지 않도록 억제해야 합니다.

샘플 보안 WordPress 디버그 코드

위에서 설명한 프로세스를 사용하여 사이트를 안전하게 디버깅하는 데 도움이 되는 네 줄의 코드를 소개합니다!

 define( 'WP_DEBUG', true ); define( 'WP_DEBUG_LOG', true ); define( 'WP_DEBUG_DISPLAY', false ); @ini_set( 'display_errors', 0 );

위의 처음 세 줄은 단순히 WordPress가 주목하는 전역 PHP 변수를 설정하는 것입니다. 디버깅을 가능하게 하고 로깅 기능을 설정한 다음 WordPress 관련 오류를 끌 수 있습니다.

네 번째 줄이 왼쪽 필드에서 나온 것처럼 보일 가능성이 있습니다! 이 줄은 WordPress에서 처리되지 않는 PHP 오류를 해결하기 위한 것입니다. 악의적인 사용자가 민감한 사이트 정보에 액세스하지 못하도록 하기 위한 마지막 기반입니다.

WordPress 디버깅 오류는 어떻게 수정합니까?

꽤 자주, 개발자들은 우리가 살펴본 네 줄의 코드를 사용할 것입니다. 데이터베이스 연결 실패와 같은 오류가 발생하지만 디버깅 로그에는 이에 대한 내용이 없습니다. WordPress에는 디버깅 방법에 따라 다른 전역 PHP 변수가 있기 때문입니다.

WordPress를 제대로 디버깅하기 위해 wp-config.php 파일에 몇 줄을 더 추가해야 하는 몇 가지 시나리오를 살펴보겠습니다.

워드프레스 자바스크립트 디버깅

WordPress 사이트가 있다면 JavaScript를 사용할 가능성이 매우 높습니다. 새로운 개발자에게 이것은 본질적으로 사이트의 대화형 요소를 강화하는 언어입니다. JavaScript는 디버그하기가 상당히 지루하기로 유명합니다. 이는 최신 사이트에서 JavaScript 위에 프레임워크를 사용하는 경우가 많아 경고 및 오류 메시지가 더욱 복잡해지기 때문입니다.

불행히도 WordPress JavaScript 디버깅을 어렵게 만드는 것은 이것만이 아닙니다. JavaScript에는 비동기 또는 "AJAX"와 일반 JavaScript의 두 가지 기본 형식이 있습니다. 일반 JavaScript는 선형 방식으로 작동합니다. 종료되기 전에 하나의 기능을 실행할 때까지 하나의 기능을 실행하지 않습니다. 이것은 웹의 초창기에는 효과가 있었을지 모르지만 웹 응용 프로그램에는 적합하지 않습니다.

반면 AJAX는 WordPress 사이트의 백그라운드에서 작동합니다. JavaScript 기능을 실행하고 출력을 기다릴 수 있지만 다른 기능이 실행되는 것을 막지는 않습니다. 사이트가 잠기는 것을 방지해야 하는 경우가 많습니다.

워드프레스에서 스크립트를 디버그하기 위해 또 다른 PHP 전역 변수를 사용하도록 한 이유는 이 디버깅 방법이 엄청난 양의 데이터를 출력하기 때문입니다.

워드프레스에서 스크립트를 디버그하기 위해 또 다른 PHP 전역 변수를 사용하도록 한 이유는 이 디버깅 방법이 엄청난 양의 데이터를 출력하기 때문입니다. 또한 JavaScript와 CSS는 클라이언트 측에서 실행되고 PHP는 서버 측에서 실행되기 때문입니다. JavaScript 및 CSS로 인해 WordPress가 실행하는 모든 오류를 출력하려면 다음 줄을 추가하기만 하면 됩니다.

 define( 'SCRIPT_DEBUG', true);

이렇게 하면 JavaScript 및 CSS(스타일시트) 오류가 모두 표시됩니다. 또한 더 복잡한 AJAX 작업에도 도움이 될 수 있습니다.

데이터 문제 수정

거의 모든 웹사이트는 데이터베이스에서 정보를 가져옵니다. WordPress에는 여러 데이터베이스가 있습니다. 일부 사이트는 데이터베이스를 별도의 서버에 저장하고 일부는 동일한 서버에 보관합니다. 모든 구성이 다르기 때문에 데이터베이스 연결에 문제가 발생할 가능성이 항상 있습니다.

WordPress에서 데이터베이스에 연결할 수 없다는 오류 메시지가 표시되거나 데이터가 올바르게 가져오지 않는 경우 디버그가 필요할 수 있습니다. 단순히 표준 WordPress 디버그 변수를 사용하면 데이터베이스 관련 오류가 발생했을 때 아무 것도 기록되지 않는다는 것을 알 수 있습니다.

이는 WordPress가 데이터베이스 관련 오류를 다른 모든 오류와 분리하기 때문입니다. 데이터베이스 오류 메시지에는 종종 민감한 정보가 포함되어 있으며 WordPress 개발자는 실수로 개인 정보를 대중에게 누설하지 않도록 하고 싶었습니다!

워드프레스 데이터베이스 문제 디버깅을 시작하려면 wp-config.php 파일에 또 다른 라인을 추가해야 합니다.

 define( 'SAVEQUERIES', true );

데이터베이스 디버깅에 뛰어들기

다른 전역 WordPress 디버그 변수와 달리 이 변수에 특별한 주의를 기울여야 합니다. "SAVEQUERIES"는 WordPress에 모든 쿼리 실행과 반환된 결과를 보고 싶다고 알려줍니다. 이는 사이트 전체의 성능을 크게 저하시킵니다! 사용량이 많은 시간에 서버에서 이 기능을 실행하지 않도록 주의하고 필요하지 않은 경우 즉시 끄십시오.

또한 출력을 약간 다르게 저장합니다. WordPress는 데이터베이스 디버깅 정보를 보기 위해 액세스해야 하는 PHP 문자열 배열을 사용합니다. $wpdb라는 PHP 전역 변수와 쿼리라는 멤버 배열에 있습니다. $wpdb->queries의 내용을 인쇄하여 접근할 수 있습니다.

워드프레스 플러그인 디버깅

다른 플랫폼에 비해 WordPress의 주요 이점 중 하나는 거의 모든 작업을 수행할 수 있는 풍부한 플러그인 라이브러리입니다. 이 글을 읽고 파일 내용을 지속적으로 변경해야 하는 물류 문제에 대해 이미 머리가 아플 수 있습니다. 고맙게도 일부 플러그인은 WordPress 디버깅에 도움이 될 수 있습니다! 특히 인기가 좋은 두 가지가 있습니다.

WP 디버깅

WordPress 사이트에 있는 이것은 가장 잘 알려진 WordPress 디버그 플러그인 중 하나입니다. 그것은 본질적으로 우리가 이미 이야기한 프로세스를 자동화합니다. 대시보드에서 몇 번의 클릭으로 사이트에서 이러한 모든 PHP 전역 변수를 켜고 끌 수 있습니다.

이 플러그인을 설치할 때 의존하는 플러그인 시리즈도 설치합니다. 전체적으로, 그들은 당신이 발견한 오류를 기록하고 해석하는 데 도움을 줍니다.

이 도구는 디버깅 프로세스를 활성화하는 데 유용하지만 자체 플러그인을 디버그하고 데이터베이스 관련 WordPress 디버그 정보를 쉽게 보려면 다른 플러그인도 필요합니다.

디버그 바

이름에서 알 수 있듯이 디버그 표시줄은 단순히 WordPress 사이트의 관리자 패널에 있는 표시줄입니다. WP 디버깅 도구와 함께 사용할 수 있습니다.

여기에는 고급 개발자를 위한 도구가 있어 캐시, 출력된 쿼리, 쿼리 결과 및 고급 정보를 볼 수 있습니다. 언급했듯이 WordPress는 모든 데이터베이스 디버깅 정보를 PHP 전역 변수에 삭제합니다.

해당 정보를 실제로 보려면 사용자 정의 PHP 파일에서 해당 배열을 반복해야 합니다. 이 플러그인은 쉬운 대안을 제공합니다. 이 모든 정보를 읽고 이해하기 쉬운 형식으로 인쇄합니다. 데이터베이스 호출을 최적화하는 방법에 대한 몇 가지 팁도 제공합니다!

보너스 콘텐츠 받기: WordPress 백업 플러그인 선택을 위한 10가지 기능
여기를 클릭하십시오

워드프레스 테마 디버깅

WordPress 테마 디버깅에는 일반적으로 스크립트와 관련된 PHP 전역 변수를 활성화하는 작업이 포함됩니다. 테마가 클라이언트 측 JavaScript와 CSS를 활용하기 때문입니다.

먼저 자신이 작성한 테마인지 확인합니다. 문제가 있는 타사 테마인 경우 해당 테마의 작성자에게 문의해야 합니다. 건초더미에서 바늘을 찾으려고 노력하는 것은 거의 불가능합니다!

자신만의 테마인 경우 디버깅을 활성화하기 위해 논의한 단계를 따랐는지 확인하십시오. 버그를 알아차릴 수 있는 조치를 취하십시오. F12 키를 눌러 웹 브라우저 내에서 개발자 콘솔을 활성화할 수도 있습니다. 이는 프로세스에 도움이 될 수 있는 더 많은 클라이언트 수준 오류 메시지를 표시합니다.

오류로 이어지는 테마에 대한 작업을 수행한 후 로그를 참조하세요. 오류의 원인에 대한 자세한 정보가 있어야 합니다. 모든 것을 다시 정상으로 되돌리려면 몇 가지 JavaScript 및/또는 CSS 조정이 필요할 수 있습니다!

WordPress 치명적인 오류 디버깅

플러그인, 테마 또는 기타 사용자 정의 콘텐츠로 인해 WordPress 사이트가 실패하는 오류가 생성되면 사이트에서 실패에 대한 이메일을 보내야 합니다. 특히 새로운 웹마스터의 경우 이것은 고통스러울 수 있습니다.

이 일련의 단계를 따르면 매우 짧은 시간에 문제를 해결할 수 있으므로 걱정할 필요가 없습니다!

  1. WordPress 디버그 모드를 켰는지 확인하십시오.
  2. 오류 로그에 액세스합니다. 치명적인 오류에 대한 자세한 정보가 있어야 합니다. 그렇다면 온라인에서 정확한 오류 코드를 검색하십시오.
  3. PHP 버전을 확인하십시오. 현재 WordPress에 필요한 것이 아닌 경우 서버에서 사용하는 PHP 버전을 업데이트하기만 하면 문제를 해결할 수 있습니다.
  4. 여전히 운이 없다면 플러그인을 살펴보십시오. 모두 끕니다. 사이트가 작동하면 플러그인이 문제를 일으켰음을 의미합니다. 문제 플러그인을 찾을 때까지 하나씩 살펴보십시오. 작성한 사람에게 연락하여 수정하도록 요청하십시오.
  5. 여전히 문제를 찾지 못했다면 테마 관련 문제일 수 있습니다. 현재 테마를 기본 WordPress 테마로 되돌리십시오. 사이트가 작동하면 작성자가 문제를 해결할 때까지 일시적으로 테마를 변경해야 합니다.
  6. 주사위가 없습니까? WordPress 개발자 포럼에 오류를 게시하십시오. 기꺼이 도와줄 사용자가 많이 있습니다.

마무리

WordPress를 디버깅하면 발생하는 여러 문제를 해결하는 데 도움이 될 수 있습니다. 어떤 플러그인에 문제가 있는지 또는 테마에 어떤 문제가 있는지 알려줄 수 있습니다. WordPress 개발자로서 디버깅은 더 나은 개발자를 도울 뿐만 아니라 깨끗하고 품질이 좋은 코드를 생성하는 데도 도움이 됩니다.