접속자 : 24(회원0)  오늘 566 어제 594 최대 13,898 전체 8,981,044  
커뮤니티정보포토 플라자공간 비디오뮤직-카페 자료 공간 관심+즐거움
Tip & TechJava Script그누보드 관련 자료Action ScriptHTML/CSSLINUX TipMySQL TipPHP Tip
   wego21™  LOGIN
  
  
  ID저장  자동로그인
회원가입  아이디/비밀번호 찾기
Tip & Tech
Java Script
그누보드 관련 자료
LINUX Tip
PHP Tip
MySQL Tip
HTML/CSS
Action Script
PHP Tip 베스트 #10
 
작성일 : 10-09-01 04:26
업로드시 용량 초과로 에러날때
 글쓴이 : IN-BEST
조회 : 11,065   추천 : 0   비추천 : 0  
정상적으로 레드헷 9.0과 PHP 4.2 버전을 설치하였고 파일 업로드 코드도 정상적으로 코딩하였습니다. 
그런데 500k 이상의 파일에서 업로드가 되지 않는 현상이 일어났습니다. 
500k이하의 파일은 정상적으로 올라가나 그 이상크기의 파일은 반응이 없거나 페이지를 찾을 수 없는 에러가 나거나 하였습니다. 

누구나 그렇듯이  php.ini의 파일 업로드 용량 설정 문제인것으로 생각하고 php.ini 파일에서 파일업로드 용량을 20메가로 늘려 주었습니다. 
참고로 php.ini파일에서 용량과 관련하여 설정해 주어야 하는 부분은 5부분입니다. 

file_uploads = On 
파일 업로드를 허용할지 설정하는 부분으로 당연히 ON으로 되어 있어야 합니다. 

upload_max_filesize = 20M 
최대 업로드 파일 사이즈입니다. 원하시는 용량만큼 설정하시면 됩니다. 

post_max_size = 20M 
※ Post방식으로 넘겨질 최대 데이터 사이즈입니다. 

max_execution_time = 300 
최대 실행시간입니다. 대용량 파일일수록 시간이 많이 걸리니 당연 실행시간을 늘려 주어야 합니다. 0으로 세팅하면 무한대이니 알아서 적당히 세팅해 주십시요 

memory_limit = 20M 
잘 모르겠는데 여하튼 이부분도 같이 세팅되어야 합니다. 


upload_max_filesize, post_max_size, memory_limit는 보통 같은 값으로 세팅을 하는데여. PHP메뉴얼에서 크기를 memory_limit > post_max_size > upload_man_filesize 로 해야 한다고 보았던것 같습니다. 
즉 Memory_limit설정값이 post_max_size보다 커야하고 post_max_size는 upload_man_filesize보다 커야한다고여... 
그런데 걍 같은 값으로 설정해도 문제가 없는듯 합니다. 

이렇게 설정하셨으면 아파치를 재시동 합니다. 

/etc/rc.d/init.d/httpd restart 

재시동 후 PHP설정이 제대로 적용되었는지 phpinfo()로 확인해 봅니다. 
그러면 위 설정값들이 적용된것을 확인할 수 있습니다. 

그리고 파일업로드를 다시 테스트 해 보십시요.. 
정상적으로 파일이 올라가나요? 
된다면 좋겠지만 분명 않되시는 분들도 계실것입니다. 
제가 그랬으니까요.... 

자 이제부터 대략 무지난감하죠... 
우선 파일업로드 중 에러가 발생한 것이니 로그를 아파치의 에러로그를 살펴봐야 겠습니다. 

vi /var/log/httpd/error_log 

그럼 에러로그들이 쫙 있는데여.... 
다음과 같은 문장을 볼 수 있습니다. 

[Thu Aug 12 17:56:31 2004] [error] [client xxx.xxx.xxx.xxx] Requested content-length of 818331 is larger than the configured limit of 524288, referer: http://xxx.xxx.xxx.xxx/form.htm 

음 짧은 영어실력이지만 대충 읽어보면 다음과 같죠 

8월 12일날 에러가 났는데 누구냐면 xxx.xxx.xxx.xxx야... 에러가 뭐라고 왔냐면 올리는 파일이 818331바이트인데 이게 524288 값으로 제한되어 있는 설정값보다 더 크다는 거지.. 

헉~~! 

구럼 도대체 어느넘이 php.ini와 상관없이 파일업로드를 방해하는 것인지가...? 
찾아보았더니.. 

/etc/httpd/conf.d/php.conf 

이넘을 열어보면 

LimitRequestBody 

라는 설정값이 있습니다.이넘의 초기값이 524288 이군여.. 이넘의 값을 대략 20메가 20000000 정도로 해보져.... 당근 아파치 재시작... 

그리고 파일을 업로드 해보면... ㅋ~~ 감동 .. 정상적으로 올라가는군여.... 

:::  관련리플  ::: 

LimitRequestBody 는 아파치 관련 설정이며 http://httpd.apache.org/docs/mod/core.html#limitrequestbody  여기에 자세한 설명이 있습니다. 

제 기억으론 아파치 2.0 부터 설정파일이 conf.d 쪽으로 나뉘어지면서 php.conf가 생겼던것 같습니다. conf.d 에는 ssl.conf 등도 있고 그렇죠 아마? 
  
그리고 php.ini에서 세팅값의 크기는 upload_max < post_max < memory_max 로 하라고 하는것 같습니다. http://www.php.net/manual/kr/configuration.directives.php 에서 그 내용을 찾으실 수 있습니다 

출처: http://blog.naver.com/panic1429/40005160257
Level. 00%
 
   
 



홈페이지소개   |   개인정보보호   |   광고   |   배너등록   |   찾아 오시는길

:::::::::::::::::::::: 인-베스트 코리아 | 김인배 | 경기 군포시 산본동 1135, 광림빌딩 706호 | TEL: 031-393-2212 | FAX: 031-393-2219 | E-mail: korea@in-best.com :::::::::::::::::::::: Copyright (C) '2008 wego21.com All rights reserved. Designed by IN-BEST™