>  기사  >  백엔드 개발  >  PHP 대용량 파일 업로드에 실패하면 어떻게 해야 합니까?

PHP 대용량 파일 업로드에 실패하면 어떻게 해야 합니까?

零下一度
零下一度원래의
2017-06-23 13:51:571568검색

대용량 파일 업로드는 항상 실패하는데, 작은 파일 업로드는 문제가 없는 이유. PHP 대용량 파일 업로드 실패의 원인과 해결 방법은 다음과 같습니다.

시나리오 1: 파일 업로드 시 파일이 저장되는 임시 디렉터리가 열려 있어야 하고, PHP 프로세스 소유자 사용자가 쓸 수 있는 디렉터리여야 합니다. 지정하지 않으면 PHP는 시스템 기본값을 사용합니다.
php.ini 파일의 upload_tmp_dir은 PHP에서 업로드한 파일이 저장되는 임시 디렉터리를 설명하는 데 사용됩니다. 파일을 업로드하려면 서버가 임시 파일을 닫지 않았는지, 해당 폴더에 대한 쓰기 권한이 있는지 확인해야 합니다. .

사례 2: max_execution_time 값은 충분히 커야 합니다. max_execution_time 변수는 PHP가 스크립트를 강제로 종료하기 전에 완료될 때까지 기다리는 시간을 초 단위로 설정합니다. 이 변수는 스크립트가 무한 루프에 들어갈 때 유용합니다. 그러나 이 기능은 완료하는 데 오랜 시간이 걸리는 합법적인 활동(예: 대용량 파일 업로드)이 있는 경우 작업이 실패할 수도 있습니다. 이러한 경우, 스크립트가 몇 가지 중요한 프로세스를 실행할 때(예: 90초, max_execution_time = 90으로 설정) PHP가 스크립트를 종료하지 않도록 이 변수의 값을 늘리는 것을 고려해야 합니다.
참고: php 함수에는 set_time_limit 함수도 있는데, 이는 위 설정과 동일한 효과를 가집니다. 둘의 차이점은 위의 설정은 php.ini 파일에 설정되는 반면 set_time_limit는 php 파일에 기록된다는 점입니다. . 따라서 페이지에서 set_time_limit를 사용하여 프로그램의 최대 실행 시간을 설정할 수도 있습니다. 예를 들어 unlimited: set_time_limit(0);

사례 3: file_uploads = On은 파일 업로드를 의미합니다. HTTP를 통해 허용되므로 이 옵션을 OFF로 설정할 수 없습니다.

사례 4: upload_max_filesize = 2M은 파일 업로드의 최대 크기를 설정합니다. php.ini 구성 파일의 기본 파일 업로드 크기는 2M입니다. PHP 초보자가 자주 저지르는 실수는 파일 업로드 기능을 작성할 때 통과하는 것입니다. 업로드되는 파일의 최대 크기, 즉 업로드가 허용되는 파일의 최대값을 설정하는 영역입니다. max_file_size(숨겨진 값 필드) 값은 실제로 업로드되는 파일의 크기를 지정하므로 일반적으로 이 값을 무시할 수 있습니다. 안전상의 이유로 PHP를 사용하여 .ini 구성 파일에서 upload_max_filesize 옵션을 구성하여 파일 업로드 크기를 설정하는 것이 가장 좋습니다. 기본 upload_max_filesize = 2M, 즉 파일 업로드 크기가 2M인 경우, 20M 등 8M를 초과하는 파일을 업로드하려면 upload_max_filesize = 20M를 설정해야 합니다.

사례 5: post_max_size 이 값도 충분히 커야 합니다. 이 변수는 양식 제출과 관련된 변수이기도 하며, 클라이언트가 POST 메소드를 통해 양식을 제출할 때 PHP 프로그램이 수신할 수 있는 최대 데이터 양을 제한합니다. 일반적으로 이 값은 upload_max_filesize보다 약간 크게 설정할 수 있습니다. 예를 들어 20MB 파일을 업로드하려는 경우 이 값을 21MB로 설정하면 됩니다.

사례 6: max_input_time 이 변수는 POST, GET 및 PUT을 통해 데이터를 수신하는 시간을 초 단위로 제한할 수 있습니다. 네트워크가 느린 환경에서 애플리케이션을 실행하는 경우 이 값을 늘려 데이터 수신에 필요한 시간을 늘려야 합니다. 예를 들어 이 값을 90초로 설정합니다.
max_input_time = 90

사례 7: memory_limit도 충분히 커야 합니다. 스크립트 실행 시 시스템에서 사용 가능한 메모리를 많이 사용하지 않도록 하기 위해 PHP에서는 메모리 사용 제한을 정의할 수 있습니다. 단일 스크립트가 사용할 수 있는 최대 메모리 용량을 지정하려면 memory_limit 변수를 사용하십시오. 변수 memory_limit의 값은 post_max_size의 값보다 적절하게 커야 합니다.

시나리오 8: 또한 호스트가 nginx 운영 체제인 경우 위 작업이 작동하지 않으면 nginx 구성 파일에 client_max_body_size 20m를 추가해야 합니다. 이러한 문장은 허용되는 최대 업로드 크기가 20MB임을 의미합니다. 자신의 상황이 온다. 내 nginx 구성 파일의 위치는 /usr/local/nginx/conf/nginx.conf입니다.

이 기사가 유사한 문제를 더 잘 해결할 수 있는 몇 가지 아이디어를 제공할 수 있기를 바랍니다.

위 내용은 PHP 대용량 파일 업로드에 실패하면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.