PHP 설정 변경 후에도 워드프레스 파일 업로드가 안될 때 (Nginx 설정 확인)

워드프레스에서 대용량 파일을 업로드하기 위해 php.ini 또는 관련 PHP 설정 파일에서 upload_max_filesizepost_max_size를 512MB 이상으로 설정했는데도 “파일이 너무 커서 업로드할 수 없습니다.”라는 오류 메시지가 계속 표시되나요?

PHP 설정을 올바르게 변경했음에도 문제가 지속된다면, 웹 서버인 Nginx의 설정이 원인일 가능성이 높습니다.

✅ PHP 설정 확인

먼저 PHP 설정이 제대로 적용되었는지 다시 한번 확인해 보세요. 호스팅 환경이나 서버 설정 방식에 따라 php.ini 파일을 직접 수정하거나, 웹 호스팅 제어판 또는 서버 관리 도구를 통해 PHP 설정을 변경할 수 있습니다. 아래 값들이 올바르게 설정되었는지 확인하세요.

항목권장 설정값
upload_max_filesize768M 또는 512M
post_max_size768M 또는 512M
memory_limit1G
max_execution_time300
max_input_time300
  • 참고: post_max_sizeupload_max_filesize보다 크거나 같아야 하며, memory_limit은 이 두 값보다 충분히 커야 합니다. 위 설정은 예시이며, 서버 환경에 맞게 조절할 수 있습니다. PHP 설정을 변경한 후에는 웹 서버나 PHP-FPM 서비스를 재시작해야 적용될 수 있습니다.

만약 위와 같이 PHP 설정이 올바르게 되어 있는데도 파일 업로드에 실패한다면, Nginx 설정을 확인해야 합니다.

⚠️ 문제 원인: Nginx의 client_max_body_size 제한

Nginx는 자체적으로 클라이언트(방문자 또는 관리자)가 서버로 전송할 수 있는 요청 본문(request body)의 최대 크기를 제한합니다. 파일 업로드 역시 이 요청 본문에 포함되므로, client_max_body_size 지시어에 설정된 값보다 큰 파일을 업로드하려고 하면 Nginx 단계에서 차단됩니다.

이 값이 설정되어 있지 않거나 (기본값은 보통 1MB), PHP 설정값보다 작게 설정되어 있다면 PHP 설정과 관계없이 파일 업로드가 실패하게 됩니다.

🔧 해결 방법: Nginx 설정 파일에 client_max_body_size 추가 또는 수정

SSH로 서버 접속 서버 IP 주소 또는 도메인 이름을 사용하여 SSH로 서버에 접속합니다. Bashssh <사용자명>@<서버_IP_주소_또는_도메인>

Nginx 설정 파일 열기 Nginx의 메인 설정 파일을 텍스트 편집기(예: nano, vim)로 엽니다. 일반적인 경로는 다음과 같습니다.

nano /etc/nginx/nginx.conf

http 블록 안에 client_max_body_size 설정 추가 또는 수정 Nginx 설정 파일 내에서 http { ... } 블록을 찾습니다. 이 블록 안에 아래 내용을 추가하거나, 이미 client_max_body_size 항목이 있다면 원하는 값으로 수정합니다. PHP 설정에서 허용한 크기보다 크거나 같게 설정하는 것이 좋습니다. (예: 1GB) Nginxhttp { # ... 다른 설정들 ... client_max_body_size 1G; # 원하는 업로드 최대 크기 (예: 768M, 1G) # ... 다른 설정들 ... }

중요: http 블록 외에도 server 블록이나 location 블록에 이 설정을 적용할 수도 있습니다. 특정 사이트나 특정 경로에만 다른 제한을 두고 싶다면 해당 블록 내에 설정하세요. 일반적으로 http 블록에 설정하면 모든 사이트에 적용됩니다.

PHP 설정에서 768M로 제한했다면 client_max_body_size 768M; 와 같이 맞추는 것이 좋습니다. 0으로 설정하면 제한을 없앨 수 있지만, 서버 자원 고갈이나 서비스 거부(DoS) 공격에 취약해질 수 있으므로 권장되지 않습니다.

Nginx 설정 테스트 및 재시작 설정 파일 문법에 오류가 없는지 확인하고, Nginx 서비스를 다시 로드하여 변경사항을 적용합니다.

nginx -t sudo systemctl reload nginx

실행 결과 syntax is oktest is successful 메시지가 표시되어야 합니다. 오류가 있다면 메시지를 확인하고 수정 후 다시 테스트하세요.

🔍 변경 사항 확인 방법 (선택 사항)

아래 명령어를 실행하면 Nginx가 로드한 전체 설정에서 client_max_body_size 값이 어떻게 적용되었는지 확인할 수 있습니다.

nginx -T | grep client_max_body_size

이 명령은 현재 적용된 값이 얼마인지, 어떤 설정 파일에서 지정되었는지 보여주므로, 설정이 올바른 파일의 올바른 위치(http, server, location 중 어디)에 적용되었는지 확인하는 데 도움이 됩니다.

✅ 최종 테스트

  1. 워드프레스 관리자 페이지에 다시 로그인합니다.
  2. 미디어 → 새로 추가 메뉴로 이동합니다.
  3. 이전에 설정한 PHP 및 Nginx 한도 내의 대용량 파일(예: 500MB 이상) 업로드를 시도합니다.

오류 메시지 없이 파일이 정상적으로 업로드되면 성공입니다!

📝 요약

  • 워드프레스 파일 업로드 문제는 PHP 설정(upload_max_filesize, post_max_size)뿐만 아니라 웹 서버(Nginx) 설정의 영향도 받습니다.
  • Nginx에서는 client_max_body_size 지시어가 업로드 크기를 제한할 수 있습니다.
  • 해결: Nginx 설정 파일(예: /etc/nginx/nginx.conf 또는 관련 server/location 블록)에 client_max_body_size 값을 PHP 설정과 맞추거나 더 크게 설정합니다. (예: client_max_body_size 1G;)
  • 설정 변경 후에는 반드시 Nginx 설정을 테스트(nginx -t)하고 서비스를 재시작(sudo systemctl reload nginx)해야 적용됩니다.