워드프레스 사이트 건강 "활성 PHP 세션을 감지했습니다" 문제 해결 방법

Last Updated: 2024년 07월 09일 댓글

워드프레스 사이트 건강 도구에서 "활성 PHP 세션을 감지했습니다", "REST API에서 오류가 발생했습니다" 등 중요한 문제에 대한 경고가 표시되는 경우가 있습니다.

이 경고가 표시되는 경우 해결 방법에 대하여 살펴보겠습니다.

워드프레스 사이트 건강 "활성 PHP 세션을 감지했습니다" 문제

"활성 PHP 세션을 감지했습니다" 경고가 표시되는 경우 클릭해보면 다음 설명이 표시됩니다.

session_start() 함수 호출이 PHP 세션을 만들었습니다. 이는 레스트 API와 루프백 요청을 방해합니다. HTTP 요청을 하기 전에 session_write_close()가 세션을 닫아야 합니다.

영문 버전을 사용하는 경우 "An active PHP sesion was detected" 경고가 표시됩니다. 한국어 버전에서는 "중요한 문제"로 되어 있는데요, 영어 원문은 "critical issue"로 "심각한 문제" 정도의 어감 같습니다.

session_start에 대한 자세한 내용은 PHP 매뉴얼을 참고해보세요.

이 문제가 발생하면 "REST API에서 오류가 발생했습니다" 경고도 함께 표시될 것입니다.

이 문제가 발생하더라도 사이트 작동에는 문제가 없을 수 있고, 경우에 따라서는 글 작성 시 오류가 발생할 수도 있을 것입니다. (REST API 오류가 발생하면 블록 에디터의 작동에 영향을 미칠 수 있습니다.)

활성 PHP 세션 감지 문제가 발생하는 경우 Stackoverflow에 올라온 "Getting "An active PHP session was detected" critical warning in wordpress" 글을 참고해보시기 바랍니다.

Stackoverflow에 올라온 Q&A에 몇 가지 해결 방법이 제시되어 있습니다.

대부분의 경우 이 오류의 실제 이유는 플러그인이나 테마 내에서 session_start() 함수를 사용할 때 PHP 세션 사용의 메카니즘이 잘못되었기 때문이라고 합니다. 이 문제에 해당하는 경우 플러그인에서 다음과 비슷한 코드를 찾도록 합니다.

if ( !session_id() ) {
    session_start();
}

위의 코드를 다음과 같은 형식으로 바꾸면 문제가 해결될 수 있다고 합니다.

if ( !session_id() ) {
    session_start( [
        'read_and_close' => true,
    ] );
}

또 다른 사용자는 WP Hotel Booking 플러그인 때문에 문제가 발생하였으며, 다음 코드를 차일드 테마(자식 테마)의 함수 파일에 추가하여 문제를 해결했다고 합니다.

function mymodule_curl_before_request($curlhandle){
session_write_close();
}
add_action( 'requests-curl.before_request','mymodule_curl_before_request', 9999 );

WP 호텔 예약 플러그인은 공교롭게도 2024년 6월 19일에 임시적으로 폐지되었으며 검토 중이라고 하네요. 아마 보안 문제가 있거나 워드프레스 이용 약관에 위배되어 일시적으로 워드프레스 플러그인 저장소에서 제거된 것으로 보입니다.

워드프레스 플러그인 저장소에서 제거된 플러그인은 사용하지 않는 것이 안전합니다. 간혹 플러그인에서 보안 취약점이 발견되었지만 개발자가 해당 문제를 해결하지 않아서 플러그인이 워드프레스 저장소에서 삭제되는 경우가 있습니다.

일반적인 문제 해결 방법

기술적으로는 위에 언급된 사항이 맞을 것 같습니다. 보통 워드프레스에서는 플러그인/테마 충돌로 인해 이 문제가 발생할 수 있습니다. 경우에 따라 플러그인이나 테마가 잘못 만들어져서 문제를 일으킬 수도 있고요.

모든 플러그인을 비활성화하여 해당 문제가 사이트 건강에서 사라지는지 체크해보시기 바랍니다. 경고 문구가 사라졌다면 플러그인을 하나씩 활성화하면서 문제를 일으키는 플러그인을 특정할 수 있습니다.

문제를 일으키는 플러그인이 중요하지 않다면 삭제하고 플러그인 개발자에게 해당 이슈를 보고할 수 있습니다. 중요한 플러그인인 경우에는 상기의 Stackoverflow 문서에서 제시하는 방법으로 문제 해결을 시도해볼 수 있을 것입니다.

  1. 모든 플러그인을 비활성화합니다.
    • 경고가 표시되지 않으면 플러그인을 하나씩 활성화면서 문제를 일으키는 플러그인을 찾습니다.
  2. 플러그인 문제가 아니라면 테마를 워드프레스 기본 테마 중 하나로 변경하여 문제가 해결되는지 체크합니다.

참고


댓글 남기기

Leave a Comment