백엔드 · 문제 · 검증됨

500 Internal Server Error

서버가 요청을 처리하던 중 예기치 못한 내부 오류를 만나 5xx 계열의 대표 응답인 500을 반환한 상태입니다.

핵심 답변

500 Internal Server Error는 서버가 요청을 완료하지 못하게 만든 예기치 못한 조건을 만났음을 알리는 포괄적 서버 오류 응답입니다. 원인이 응답 자체에 드러나지 않으므로 서버 로그를 확인하고 설정, 메모리, 처리되지 않은 예외 등을 구간별로 좁혀야 합니다.

상세 설명

500 Internal Server Error는 서버가 요청을 처리하던 중 예기치 못한 조건을 만나 요청을 완료하지 못했음을 알리는 응답입니다. MDN은 이 응답을 더 적절한 5xx 오류를 찾지 못했을 때 반환하는 포괄적(catch-all) 서버 오류로 설명합니다.

500은 원인 자체가 아니라 서버가 요청을 끝내지 못했다는 결과 신호입니다. 실제 원인은 응답 본문이 아니라 서버 로그에서 확인해야 합니다.

무엇을 뜻하는가

500 응답은 브라우저와 서버 사이의 연결은 성립했지만, 서버 애플리케이션이나 실행 환경이 요청을 처리하다가 중단됐음을 의미합니다. MDN은 방문자가 500을 만났다면 이는 서버 소유자나 관리자가 조사해야 하는 문제라고 안내합니다. 또한 관리자가 500 같은 서버 오류 응답을 요청 정보와 함께 로그로 남겨 서비스 안정성을 높일 수 있다고 설명합니다.

원인이 응답에 드러나지 않는 이유

500은 구체적인 5xx로 분류되지 못한 상황을 한데 묶어 반환합니다. MDN이 예시로 드는 원인은 다음과 같습니다.

관찰 대상확인할 내용
서버 설정잘못된 서버 구성 여부
메모리메모리 부족(OOM) 발생 여부
애플리케이션 코드처리되지 않은 예외 발생 여부
파일 권한부적절한 파일 권한 여부

이 항목들은 모두 원인 후보일 뿐이며, 어느 것이 이번 500을 일으켰는지는 로그로 좁혀야 합니다.

WordPress·PHP 환경에서 자주 겪는 경우

PHP 기반의 WordPress에서는 500이 자주 관찰됩니다. WordPress 공식 문서는 원인이 여러 가지일 수 있다고 전제하면서 다음 순서로 확인할 것을 안내합니다.

  • 손상된 .htaccess: 가장 흔한 원인으로 제시됩니다. FTP로 접속해 .htaccess.htaccess_old로 이름을 바꿔 비활성화한 뒤 동작을 확인하고, 이상이 없으면 고유주소(permalink) 설정을 다시 저장해 새 파일을 생성합니다.
  • 플러그인 충돌: 모든 플러그인을 비활성화해 특정 플러그인이 원인인지 확인합니다.
  • 테마 문제: 기본 테마(예: Twenty Twenty-One)로 전환해 테마가 원인인지 확인합니다.
  • 메모리 한도: wp-config.php에서 PHP 메모리 한도를 올립니다.
  • 코어 파일 손상: 새로 내려받은 WordPress의 wp-adminwp-includes 폴더를 다시 업로드합니다.

문서는 가장 흔한 원인부터 순서대로 하나씩 배제해 나갈 것을 강조합니다. 이때 이름 변경처럼 되돌릴 수 있는 방식으로 한 번에 하나씩 바꿔야 어떤 변경이 문제를 해결했는지 구분할 수 있습니다.

확인 순서

500을 만났을 때는 응답만으로 판단하지 말고, 서버 로그에서 발생 시점과 요청 정보를 먼저 확인한 뒤 위의 원인 후보를 좁혀야 합니다. 구체적인 분류 절차는 서버 오류 분류 체크리스트를 따릅니다.

수정 후에는 같은 URL을 다시 요청해 500이 재현되지 않는지 반복 확인합니다.

현재 증상

  • 서버 5xx 응답

확인 순서

  1. 서버 오류 로그에서 500 발생 시점의 상세 메시지와 요청 정보를 확인합니다. 기대 결과는 어떤 요청·파일·예외가 500을 유발했는지 식별되는 것입니다.
  2. 동일 URL을 다시 요청해 500이 재현되는지, 특정 경로에서만 발생하는지 확인합니다. 기대 결과는 오류 범위가 전체 사이트인지 일부 페이지인지 구분되는 것입니다.

주의할 조치

  • 500 응답 본문만 보고 원인을 단정하지 않습니다. 500은 더 구체적인 5xx를 찾지 못했을 때 반환되는 포괄 응답이므로 원인은 서버 로그에서 확인해야 합니다.
  • 설정 파일이나 코어 파일을 수정하기 전에 원본을 백업해 되돌릴 수 있게 합니다. 예를 들어 파일 이름을 바꿔 비활성화한 뒤 문제가 재현되지 않으면 원래 이름으로 복원합니다.
  • 방문자 화면에 내부 오류 상세나 스택 트레이스를 그대로 노출하지 않습니다.

서버 오류 원인 구간 확인

서버 오류가 발생하면 먼저 응답 코드와 오류 로그로 서버 측 문제임을 확인하고, 애플리케이션 코드·구성 파일·플러그인·데이터베이스·메모리를 하나씩 분리해 원인 구간을 좁혀야 합니다. 한 부분만 바꾼 뒤 재현 여부를 확인해 인과를 확정합니다.

  • 반환된 상태 코드가 5xx인지 확인합니다. 통과 기준은 500 등 서버 오류 응답이 관찰되어 클라이언트가 아닌 서버 측 문제로 좁혀지는 것입니다.
  • 서버·애플리케이션 오류 로그(예 debug.log, 서버 error log)에 해당 시각의 오류가 기록됐는지 확인합니다. 통과 기준은 요청 시각과 일치하는 오류 항목을 찾아내는 것입니다.
  • 최근 변경분(코드·구성 파일·플러그인·테마)을 되돌리거나 비활성화한 뒤 재현되는지 확인합니다. 통과 기준은 한 번에 한 요소만 바꿔 원인 요소를 특정하는 것입니다.
  • 데이터베이스 연결과 애플리케이션 실행(메모리·실행 시간)을 각각 분리해 확인합니다. 통과 기준은 DB 연결 실패와 실행 자원 부족 중 어느 구간인지 구분되는 것입니다.
  • 원인으로 지목한 구간만 수정한 뒤 동일 URL을 다시 요청해 5xx가 사라졌는지 확인합니다. 통과 기준은 반복 요청에서 오류가 재현되지 않는 것입니다.

근거와 출처

MDN Web Docs (Mozilla) 공식 문서

확인 범위: definition, generic-catch-all, common-causes, server-side-investigation · 확인일: 2026-07-23

WordPress 공식 문서

확인 범위: common-causes, resolution · 확인일: 2026-07-23