2012-08-01 3 views
7

현재 사용자가 파일을 업로드 할 수있는 웹 사이트에서 작업하고 있습니다. 대용량 파일을 업로드하지 못하게하려면 어떻게해야합니까? 당시 옵션 (PHP의 post_max_sizeupload_max_filesize)은 유용했습니다. 파일이 완전히 업로드되었습니다. 너무 큰 파일로 연결을 닫고 싶습니다 (미리 HTTP 헤더를 확인하고 파일을 업로드하는 동안 확인하여). Apache 지시어 또는 PHP 구성 키가 있습니까?너무 큰 파일 업로드로 Apache 연결을 닫습니다.

감사합니다.

편집 : 추가 Apache conf (기본값 : CentOS).
EDIT2 : PHP conf (기본값은 CentOS)입니다.

EDIT3 : 너무 큰 파일을 지정하면 PHP가 파이프를 닫는 것 같습니다. 그럼에도 불구하고 Apache는 끝날 때까지 전송을 허용합니다.

+0

http://stackoverflow.com/questions/4738691/php-bulk-post-500-apache-internal-server-error/4739476#4739476 해당 답변의 매개 변수를 확인하십시오. – regilero

+0

우리는 시간 외 우리는 연결 속도에 의존하고 싶지 않습니다. 어쨌든, PHP는 문제가되지 않는 것 같습니다. 오히려 아파치입니다. – Iso

+0

링크 및 @PhpMyCoder에서 설명한대로 Apache 설정에서 LimitRequestBody가 있습니다. – regilero

답변

2

좋아.

그래서 당신이 직면하고있는 주요 문제는 아파치 지시어 LimitRequestBody 또는 LimitXMLRequestBody이 업로드 완료 후 적용되는 것입니다. 크기가 확인되기 전에 아파치가 임시 폴더에서 전체 파일을 기다리는 것 같습니다.

너무 큰 업로드가 감지되면 바로 연결을 끊어야합니다. 한 번에 하나씩 mod_throttle이 그것을 할 수있는 모듈이었습니다. 이 Alternative to mod_throttle servfault question을 확인하면 필요에 따라 대역폭 제어 모듈 목록을 만들 수 있습니다.

mod_bwshare 예를 들어 클라이언트 IP 당 대역폭을 제한 할 수 있지만 요청 당 per_IP 제한이 아닙니다. 또한 mod_quos이 있는데 다운로드 할 때 많은 제한 사항을 처리하지만 업로드 관리에 많은 것을 찾을 수는 없습니다 (느린 업로드 일찍 종료하는 것만 가능). this answer on throttling uploads을 참조하십시오.

그래서 당신은 또한 (TCP 스택에) OS 수준 제한 또는 고급 방화벽 기능 (servfault에 문의)를 확인 할 수 있습니다.

숨겨진 양식 값 또는 js 업 로더 설정과 같은 클라이언트 측 제한 도구를 사용할 수도 있지만 보안 측면에서는 클라이언트 측 제한을 변경하는 것을 피할 수없는 클라이언트 쪽에서 사용 된 것과 마찬가지입니다.

2

아파치의 LimitRequestBody을 사용할 수 있습니다. 구문은 간단한 (그리고 바이트)입니다 : 당신이 (우분투에 sudo service apache2 restart) httpd.conf를 편집하는 경우이 httpd.conf.htaccess 모두에서 작동

LimitRequestBody 10490000 # 10 MB 

, 바로 다시 시작 염두에. 당신은 파일 단위에 대한 제한을 설정해야하는 경우

는 (제한 아바타 5 MB의 업로드 만 제한 첨부 20메가바이트에)는, 당신은 <Files>를 사용할 수 있습니다

<Files avatarUpload.php> 
    LimitRequestBody 5242880 # 5 MB 
</Files> 

<Files attachmentUpload.php> 
    LimitRequestBody 20971520 # 20 MB 
</Files> 
+2

우리는 이것도 테스트했습니다. 안타깝게도 파일이 완전히 업로드되고 Apache가 연결을 끊습니다. – Iso

+0

정말요? 그런 다음 아파치와 함께 버그 보고서를 기록해야합니다.이 기능이 의도 한 바를 명확히 모순됩니다 (즉, 귀하의 방법론에 매우 모호합니다). – symcbean

+0

좋은 하나 .... :) – Baba

관련 문제