워드프레스 500 내부 서버 오류(Internal Server Error) 조치 방법 종합 가이드

워드프레스의 플러그인을 설치하는데 갑자기 화면에 500원(?) 짜리 둥근 달이 나타났다.
워드프레스를 접근하는 wp-admin, 도메인 그리고 검색도 모두 아웃, 이유인즉 워드프레스 500 에러는 서버가 요청을 처리하지 못할 때 발생하는 일반적인 오류다.
플러그인/테마 충돌, PHP 메모리 부족, .htaccess 손상, 파일 권한 오류, PHP 버전 불일치, 서버 측 제한(ModSecurity/방화벽) 등 원인이 다양하다.
아무튼 너무 겁먹지 말고 단계별로 진행하면 대부분의 사례를 신속히 진단하고 복구할 수 있다.
사실 난 워드프레스를 폭파 시킬 뻔 했다.

▦ 즉시 확인: 서버 상태와 에러 로그

  • 상태 페이지/호스팅 공지 확인: 호스팅사 점검/장애 여부를 먼저 확인.
  • 서버 에러 로그 확인:
    • cPanel: Metrics > Errors, 혹은 File Manager > logs
    • Plesk: Logs
    • SSH: tail -f /var/log/apache2/error.log 또는 /var/log/nginx/error.log, PHP-FPM 로그
  • 워드프레스 디버그 활성화:
    • wp-config.php에 추가 또는 수정
  • wp-content/debug.log 파일을 열어 최근 오류 스택을 확인.

핵심:
1) 에러 로그에서 최근 Fatal error(메모리 부족, 함수/클래스 선언 충돌, 특정 플러그인 파일 경로 등)를 먼저 파악.
2) 디버그 활성화(wp-config.php에 추가 또는 수정) 하여 문제를 확인하였다면 반드시 “워드프레스 디버거를 삭제 또는 비활성.

▦ 플러그인 충돌 점검(가장 흔한 원인)

  • 모든 플러그인 비활성화:
    • FTP/SFTP 또는 File Manager에서 wp-content/plugins 폴더명을 plugins-disabled로 임시 변경.
    • 사이트가 정상 표시되면 플러그인 충돌이 원인.
  • 문제 플러그인 찾기:
    • 폴더명을 원복한 뒤, 개별 플러그인 폴더를 하나씩 -off로 바꾸며 접속 테스트.
    • 원인이 되는 플러그인을 찾으면 최신 버전 업데이트 또는 대체 플러그인으로 교체.

▦ .htaccess 초기화(Apache 환경)

  • 백업 후 초기화:
    • 루트 디렉터리의 .htaccess를 .htaccess.bak로 변경.
    • 대시보드 접속 가능 시 설정 > 고정 링크에서 “변경 사항 저장” 클릭하여 재생성.
  • 수동 기본값(퍼멀링크 기본 규칙):

주의:
필자는 이 방법을 시행하던 중 마지막 수행한 플러그인 프로그램 관련 정보가 마지막 줄에 있어 이를 삭제하고 워드프레스를 호출하였더니, 문제의 플로그인 설치 전 상태로 복귀하여 워드프레스가 정상 작동하였습니다.
그래서 문제된 플러그인을 삭제(?)하고 뒷 정리 후 깜끔하게 마무리 하였다.
아무튼 계속 이어가겠습니다. 왜냐면 뒤 부분에 나온 방법도 다 해보았고, 그 안에 해결 방법이 있을 수도 있기 때문입니다.
※ 매우 중요한 사항이라, 시스템을 건들지 말고 해결하기를 바라는 마음에 앞 부분에 서술 하였다는 것을 이해하여 주세요.

▦ 테마 문제 점검

  • 기본 테마로 전환:
    • FTP로 /wp-content/themes/에서 사용 중 테마 폴더명을 테마명-off로 변경하면 워드프레스가 기본 테마(Twentytwenty 시리즈 등)로 폴백.
    • 정상 동작하면 해당 테마의 functions.php, 커스텀 코드, 자식 테마 오버라이드 파일을 점검.

▦ PHP 메모리 제한 상향

  • wp-config.php에 추가:
  • 호스팅 허용 범위 내에서 php.ini 또는 .user.ini로 memory_limit = 512M 설정.
  • 메모리 부족 에러(Fatal error: Allowed memory size…)가 로그에 보이면 효과적.

▦ PHP 버전/확장 모듈 호환성

  • 호스팅 패널에서 PHP 8.1~8.2 권장(사용 플러그인/테마 호환 노트 확인).
  • 필수 확장 확인: curl, mbstring, json, xml, zip, gd/imagick, mysqli, intl 등.
  • PHP 버전 교체 후 OPCache/WAF 캐시 클리어.

▦ 파일 권한 및 소유권

  • 권한:
    • 파일 644, 폴더 755 권장.
    • wp-config.php는 640 또는 600.
  • 소유권:
    • www-data나 nginx 등 웹서버 사용자로 일치시키기(chown -R).
  • 잘못된 권한은 플러그인/업데이트 실패, 내부 에러의 원인이 될 수 있음.

▦ 코어/테마/플러그인 손상 파일 복구

  • 워드프레스 코어 재설치:
    • 대시보드 > 업데이트 > 지금 다시 설치(접근 가능할 때).
    • 또는 wordpress.org에서 동일 버전 다운로드 후 wp-admin, wp-includes 디렉터리만 덮어쓰기( wp-content는 유지).
  • 플러그인/테마 재설치:
    • 문제 의심 항목 삭제 후 공식 최신 패키지로 재설치.

▦ 캐시/보안 플러그인, WAF, CDN 점검

  • 캐시 플러그인 비활성화(LiteSpeed, WP Rocket, W3TC 등) 후 캐시 퍼지.
  • 보안 플러그인(Wordfence, iThemes) 쉴드 룰 차단 로그 확인.
  • CDN/Reverse Proxy:
    • Cloudflare: Development Mode, 캐시 퍼지, WAF events 확인.
    • 오리진 방화벽/ModSecurity 룰이 관리자 요청을 차단하는지 점검.

▦ 데이터베이스 점검/수리

  • wp-config.php에 임시 활성화:
  • /wp-admin/maint/repair.php 접속하여 “데이터베이스 복구 및 최적화” 실행.
  • 완료 후 위 상수 제거.
  • phpMyAdmin에서 테이블 상태(오류/충돌) 확인 및 수리 기능 실행.

▦ 크론(워프 크론)과 대용량 작업

  • wp-cron 과도 실행으로 시간 초과가 나는 경우:
  • 대용량 백업/마이그레이션/이미지 변환 플러그인 실행 시 PHP max_execution_time, max_input_vars 상승.

▦ 멀티사이트/한글 슬러그/업로드 경로 이슈

  • 멀티사이트라면 Nginx map/리라이트 규칙, sunrise.php, 도메인 매핑 상태 확인.
  • 한글 파일명/슬러그 처리 중 이미지 최적화나 썸네일 생성 단계에서 에러가 날 수 있으므로 파일명 ASCII 변환 플러그인 고려.
  • 업로드 디렉터리 권한, 디스크 용량 부족 여부 확인(df -h).

▦ Nginx 설정 점검(비아파치 환경)

  • 퍼멀링크 리라이트:
  • PHP-FPM 핸들러:
  • client_max_body_size(업로드 용량), fastcgi_buffers, timeouts 점검.

▦ 말웨어/침해 여부 점검

  • 보안 플러그인으로 스캔(Wordfence, MalCare, Sucuri).
  • 알 수 없는 .php 파일, 무단 사용자, wp-config.php 이상 값, wp-includes 안의 낯선 파일 확인.
  • 의심 시 백업에서 복구 후 관리자 비밀번호/키 회전 및 모든 액세스 토큰 재발급.

▦ 백업 복구

  • 최신 정상 스냅샷이 있다면 복구가 가장 빠른 해결책.
  • 복구 전 현재 상태도 스냅샷으로 보관(문제 재현과 롤백 대비).

※ 참고) 빠른 체크리스트(현장용)

  • 에러 로그/워프 debug.log 확인
  • 플러그인 전부 비활성화 → 개별 재활성화
  • 기본 테마 전환
  • .htaccess 초기화(아파치)
  • PHP 메모리/버전/확장 확인
  • 파일 권한/소유권 수정
  • 캐시·CDN·보안 플러그인/WAF 점검
  • DB repair/optimize
  • 서버 리라이트/PHP-FPM 설정 확인
  • 백업 복구 또는 코어 재설치

※ 추가 팁

  • 유지보수 모드 활용: 장애 중 방문자 경험 보호(간단한 HTM 페이지 또는 플러그인 사용).
  • 스테이징 환경에서 재현: 라이브 반영 전 검증.
  • 변경 로그 기록: 무엇을, 언제, 누가 변경했는지 기록하면 원인 추적이 쉬워집니다.

위로 스크롤