워드프레스에서 대용량 파일을 업로드하기 위해 php.ini
또는 관련 PHP 설정 파일에서 upload_max_filesize
와 post_max_size
를 512MB 이상으로 설정했는데도 “파일이 너무 커서 업로드할 수 없습니다.”라는 오류 메시지가 계속 표시되나요?
PHP 설정을 올바르게 변경했음에도 문제가 지속된다면, 웹 서버인 Nginx의 설정이 원인일 가능성이 높습니다.
✅ PHP 설정 확인
먼저 PHP 설정이 제대로 적용되었는지 다시 한번 확인해 보세요. 호스팅 환경이나 서버 설정 방식에 따라 php.ini
파일을 직접 수정하거나, 웹 호스팅 제어판 또는 서버 관리 도구를 통해 PHP 설정을 변경할 수 있습니다. 아래 값들이 올바르게 설정되었는지 확인하세요.
항목 | 권장 설정값 |
---|---|
upload_max_filesize | 768M 또는 512M |
post_max_size | 768M 또는 512M |
memory_limit | 1G |
max_execution_time | 300 |
max_input_time | 300 |
- 참고:
post_max_size
는upload_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 ok
와 test is successful
메시지가 표시되어야 합니다. 오류가 있다면 메시지를 확인하고 수정 후 다시 테스트하세요.
🔍 변경 사항 확인 방법 (선택 사항)
아래 명령어를 실행하면 Nginx가 로드한 전체 설정에서 client_max_body_size
값이 어떻게 적용되었는지 확인할 수 있습니다.
nginx -T | grep client_max_body_size
이 명령은 현재 적용된 값이 얼마인지, 어떤 설정 파일에서 지정되었는지 보여주므로, 설정이 올바른 파일의 올바른 위치(http
, server
, location
중 어디)에 적용되었는지 확인하는 데 도움이 됩니다.
✅ 최종 테스트
- 워드프레스 관리자 페이지에 다시 로그인합니다.
- 미디어 → 새로 추가 메뉴로 이동합니다.
- 이전에 설정한 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
)해야 적용됩니다.