드물지만 워드프레스에서 cURL error 28 에러가 발생하는 경우가 있습니다. 워드프레스에서 cURL error 28 및 REST-API 호출 오류가 발생하는 경우 확인할 사항에 대해 살펴보겠습니다. 특정 플러그인이 이러한 문제를 일으키는 경우에는 해당 플러그인을 제거하고, 대신 유사한 기능의 플러그인으로 교체하거나, 문제를 일으키는 플러그인의 개발자에게 연락하여 버그를 보고하여 문제 수정을 요청할 수 있습니다.
[ 이 글은 2021년 6월 28일에 최종 업데이트되었습니다. ]
워드프레스 사이트 건강 (사이트 상태)
워드프레스 최신 버전에서는 도구 > 사이트 상태 (또는 사이트 건강)에서 사이트에 문제가 없는지 확인할 수 있습니다. 제 워드프레스 블로그에서 사이트 상태 도구를 방문해보니 다음과 같이 표시되네요.
비활성화된 플러그인은 모두 제거하는 것이 보안상 바람직합니다. 저는 필요할 때에만 활성화했다가 평상시에는 비활성화한 플러그인이 있어 위와 같이 "비활성화 플러그인을 모두 제거해야 합니다" 권고 사항이 표시되고 있습니다.
그리고 "하나 이상의 필수 모듈이 누락되었습니다" 권고도 표시되네요. 살펴보니 "선택모듈 imagick가 설치되어 있지 않거나 사용할 수 없습니다"라는 메시지가 표시되고 있습니다. 이 문제는 서버 레벨에서 해결해야 하는데, 별 문제가 아닌 것 같아서 그냥 무시하고 있습니다.
워드프레스에서 cURL error 28 및 REST-API 호출 오류
위와 같은 경우 별문제는 없습니다. 하지만 다음 그림과 같이 심각한 문제가 있다고 표시되는 경우가 있습니다.
오류 문구는 다음과 같습니다.
REST API에서 오류가 발생했습니다.
REST API는 WordPress 및 기타 응용 프로그램이 서버와 통신하는 한 가지 방법입니다. 한 가지 예는 블록 편집기 화면으로, API를 이용해서 글과 페이지를 보여주고, 저장합니다.
REST API에서 오류가 발생하여 실패하였습니다.
에러: [] cURL error 28: Operation timed out after 10001 milliseconds with 0 bytes received
루프백 요청을 완료할 수 없습니다.
루프백 요청은 예약된 이벤트를 실행하는데 사용합니다. 또한 테마와 플러그인의 내장편집기가 코드 안정성을 확인하는데에도 사용합니다.
사이트에 대한 루프백 요청이 실패했습니다. 이는 해당 기능에 의존하는 기능이 현재 예상대로 작동하지 않음을 의미합니다.
에러: [] cURL error 28: Operation timed out after 10001 milliseconds with 0 bytes received
이 오류에 대해 다음 워드프레스 지원 포럼에서 자세히 다루고 있습니다.
정리해 보면...
- 최신 버전의 PHP와 cURL 라이브러리를 사용하는지 체크
- 서버 메모리 제한 설정 상향 조정
- cURL 에러는 DNS 문제와 관련될 수 있습니다. 호스팅 업체에서 DNS 구성을 OpenDNS로 전환해야 할 수도 있습니다: https://www.howtogeek.com/164981/how-to-switch-to-opendns-or-google-dns-to-speed-up-web-browsing/
- wp-cron에 제한이 있는지, 혹은 루프백(loopback)이 비활성화되지 않았는지 호스팅 업체에 문의
- 외부로 나가는 cURL 요청을 차단할 수 있는 방화벽 또는 보안 모듈 (예: mod_security )이 있는지 웹호스팅 업체에 문의합니다.
- 이외에도 플러그인이 문제를 일으킬 수 있습니다.
이 정도로 귀결되는 것 같습니다. 특정 플러그인이 문제를 일으킬 수 있습니다. 제 경우에는 특정 플러그인이 문제의 원인이었습니다.
플러그인 중 하나를 활성화하면 위에 설명된 오류 메시지가 발생하는 것과 관련하여 문의를 받아 잠시 테스트를 진행해보았습니다.
서버와 관련된 문제가 의심되어 블루호스트와 사이트그라운드에서 호스팅되는 사이트에서 테스트해보니 모두 동일한 오류가 발생했습니다.
이런 경우에는 플러그인이 문제를 일으키는 것으로 추정할 수 있을 것 같습니다. 재미있는 것은 해당 플러그인을 활성화하면 도구 > 사이트 상태(사이트 건강)에서 이런 Critical Issue 경고가 표시되었지만 플러그인은 잘 작동했습니다.ㅎ
플러그인으로 인해 REST-API call 오류가 발생하는 경우 플러그인 개발자에게 문제를 보고하여 문제가 발생한다는 사실을 알려줄 수 있습니다.
cURL error 28 오류가 발생할 경우 대응 (요약)
- 방화벽이 문제를 일으킬 수 있습니다. 먼저 보안 플러그인이 사용되는 경우 보안 플러그인을 비활성화하여 문제가 발생하는지 체크합니다.
- 보안 플러그인 해제로 문제가 해결되지 않으면, 모든 플러그인을 비활성화하여 문제 발생 여부를 다시 체크해봅니다.
- 서버의 소프트웨어가 최신 버전인지 체크합니다.
- 웹호스팅 업체에 연락하여 상의합니다.
서버의 소프트웨어 버전은 도구 > 사이트 건강 > 정보 탭을 클릭하여 서버 섹션에서 확인할 수 있습니다.
최신 버전인 PHP 8.0은 2020년 11월 26일에 릴리즈되었으며, 현재는 대부분의 인기 테마와 플러그인에서 잘 작동합니다만, 일부 테마와 플러그인에서 문제를 일으킬 수 있습니다.
참고: