POST Content-Length가 제한을 초과했습니다.


94

사용자가 파일을 업로드 할 때 PHP의 error_log에서 비슷한 오류가 발생합니다.

PHP 경고 : POST Content-Length of 11933650 바이트가 Unknown on line 0의 제한 인 8388608 바이트를 초과합니다.

내 php.ini (public_html에 사용자 정의 ini 파일 생성)에서이 문제가 해결 될까요? 1GB 정도로 설정해야합니까? php.ini에서 설정을 변경하겠습니다. 문제가 해결됩니까?

upload_max_filesize = 1000M ;1GB
post_max_size = 1000M

'memory_limit'제한을 무엇으로 설정합니까?

또한 파일 업로드 크기가 <1GB인지 확인하는 스크립트에서 이것이 맞습니까?

if($_FILES["uploadedfile"]["size"]<1000000)

5
올바른 php.ini를 편집하고 있습니까?
Pekka 2011 년

올바른 php.ini를 편집하고 있습니까 (여러 개가 있습니다)? 설정을 재설정하는 다른 것이 있습니까? (예 : 어떤 전화 php_ini_set?)
Piskvor는 2011

나는으로 public_html에서 사용자 지정 php.ini 파일 생성
daza166

@daza : 원하는 곳에 php.ini를 놓을 수 없습니다. PHP는 특정 위치 만 확인하고 "현재 디렉토리"는 그 중 하나가 아닙니다. httpd.conf 및 / 또는 .htaccess 파일에서 'php_value'지시문을 사용하여 특정 디렉토리에 설정할 수 있습니다. 그러나 그렇지 않으면 기본 .ini 파일에서 변경해야합니다. 를 사용 php_info()하여 "로컬"설정이 무엇인지 볼 수, 어느 .INI 파일을 사용하고 있습니다.
Marc B

1
info.php <?php phpinfo(); ?>를 public_html에 복사하고 브라우저에서 호출하십시오. 그런 다음 upload_max_filesize에 올바른 값이 있는지 확인하십시오.
DanielB

답변:


96

8388608 바이트는 PHP의 기본 제한 인 8M입니다. php.ini에 대한 이러한 변경은 실제로 문제를 해결할 것입니다 (아파치 서버를 만든 후에 다시 시작하십시오).

여기에서 메모리 제한을 변경할 필요가 없습니다.


.ini 파일을 변경 한 후 서버를 다시 시작해야합니다.
Sandhu

당신의 nginx + PHP는 FPM의 메이크업을 사용하는 경우 반드시 PHP는 데몬을 다시 시작합니다 sudo service php5-fpm restart
Gourneau

다시 시작이 나를 위해 해냈습니다. +1 감사합니다)
Refilon

1
저 그냥 여기 내 경험을 게시하자 다시 시작이 나에게 준 stop: Unknown instance:, 그냥 새로운 PHP5-FPM의 인스턴스를 생성했지만 내 웹 서버가 여전히 이전 하나를 사용했습니다, 그럼 내가해야 할 일을했을 sudo killall -KILL php5-fpm다음sudo service php5-fpm start

업로드를 처리하는 PHP 프로세스에서 수행되는 다른 작업에 memory_limit따라 원하는 최대 업로드 크기보다 큰 양 으로 늘려야 할 수도 있습니다 .
Craig Finch

45

파일 post_max_size에서 8M에서 32M으로 변경하는 것이 좋습니다 php.ini.


39

php.ini에서 설정

그런 다음 설정하십시오.

upload_max_filesize = 1000M;
post_max_size = 1000M;

그런 다음 xampp를 다시 시작하십시오 .. 이미지 확인


17

이것을 .htaccess에 붙여 넣으면 작동합니다.

php_value post_max_size 2000M
php_value upload_max_filesize 2500M
php_value max_execution_time 6000000
php_value max_input_time 6000000
php_value memory_limit 2500M

10

HTTP POST 메서드를 사용하여 업로드 할 때 텍스트에는 파일 크기 및 이름 등의 헤더도 포함되기 때문에 post_max_sizeupload_max_filesize 보다 약간 커야 합니다.

1GiB 파일을 성공적으로 공급하려면 다음을 설정해야합니다.

upload_max_filesize = 1024M
post_max_size = 1025M

GB의 올바른 접미사는 G입니다 (예 : upload_max_filesize = 1G).

memory_limit 를 설정할 필요가 없습니다 .


6

경우에 따라 최대 실행 시간을 늘려야합니다.

max_execution_time=30

나는 그것을 만든

max_execution_time=600000

그때 나는 행복했습니다.


7
모든 php 프로세스가 해당 시간 동안 실행될 수 있기 때문에 php.ini에서이 작업을 수행하지 않는 경우가 많습니다. set_time_limit ()를 사용하여 단일 파일로 설정할 수 있습니다. 예 : set_time_limit (600000)
billrichards

5

하나 이상의 php.ini 파일 이있을 수 있습니다 . 예를 들어 WAMP를 사용할 때 다음 디렉토리에 2 개의 php.ini 파일 이 있습니다 .

  • C:\wamp\bin\apache\apache2.4.9\bin
  • C:\wamp\bin\php\php5.5.12

첫 번째 항목을 편집해야합니다.


4

동의하지 않지만 php.ini 또는 .htaccess에서 파일 크기를 늘리는이 솔루션은 사용자가 서버 응용 프로그램에서 허용되는 것보다 큰 파일을 보내면 작동하지 않습니다. 나는 이것을 프런트 엔드에서 검증하는 것이 좋습니다. 예:

$(document).ready(function() {
    $ ('#your_input_file_id').bind('change', function() {
        var fileSize = this.files[0].size/1024/1024;
        if (fileSize > 2) { // 2M
            alert('Your custom message for max file size exceeded');
            $('#your_input_file_id').val('');
        }
    });
});


2
무엇에 동의하지 않습니까?

1
클라이언트 측의 유효성을 검사하는 것은 좋지만 보안을 위해 아무것도하지 않으며 사용자가 대용량 파일을 업로드하는 경우 즉각적인 경고 만 제공합니다. 여기서 전체 목표는 사용자가 큰 파일을 업로드하지 못하도록하는 것이 아니라 큰 파일을 업로드 할 수 있도록하는 것입니다.
Altimus Prime

1
서버 측 솔루션 / 확인이 없습니까? JS 검사를 쉽게 우회 할 수 있습니다.
akinuri

Nvm, 그것을 알아 냈습니다 :if ($_SERVER["CONTENT_LENGTH"] > (int)(str_replace("M", "", ini_get("post_max_size")) * 1024 * 1024)) { // do w/e
akinuri 19

2

Wamp를 사용하는 Windows에서 Php 5.6.X 버전을 사용하는 경우 파일 위치는 다음 위치에있을 수 있습니다.

C:\Windows\php.ini

그냥 시도

post_max_size = 100M;

Apache one에서 변경을 시도하십시오. Wamp / XAMP로드 .ini 파일

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.