>  기사  >  백엔드 개발  >  PHP가 대용량 파일을 업로드할 수 없으면 어떻게 해야 합니까?

PHP가 대용량 파일을 업로드할 수 없으면 어떻게 해야 합니까?

藏色散人
藏色散人원래의
2021-02-28 09:37:241950검색

PHP에서 대용량 파일을 업로드할 수 없는 문제에 대한 해결 방법: 1. 임시 파일을 열고 폴더에 대한 쓰기 권한을 설정합니다. 2. "max_execution_time" 값을 늘립니다. 3. "file_uploads" 값을 켜기로 설정합니다. "upload_max_filesize=20M" 등을 설정합니다.

PHP가 대용량 파일을 업로드할 수 없으면 어떻게 해야 합니까?

이 기사의 운영 환경: Windows 7 시스템, PHP 버전 7.1, DELL G3 컴퓨터

PHP에서 대용량 파일을 업로드하지 못하는 이유와 대책

대용량 파일 업로드는 항상 실패하는데 업로드가 실패하는 이유 작은 파일은 문제 없습니다. 편집자님이 도저히 알 수 없어서 인터넷으로 원인을 찾아보니, PHP가 대용량 파일을 업로드하지 못하는 이유와 해결방안에 대한 글을 모아서 모두와 공유하게 되었습니다.

다음은 다양한 이유와 해결 방법입니다.

사례 1: 파일 업로드 시 파일이 저장되는 임시 디렉터리가 열려 있어야 하며, PHP 프로세스 소유자 사용자가 쓸 수 있는 디렉터리여야 합니다. 지정하지 않으면 PHP는 시스템 기본값을 사용합니다.

php.ini 파일의 upload_tmp_dir은 PHP에서 업로드한 파일이 저장되는 임시 디렉터리를 설명하는 데 사용됩니다. 파일을 업로드하려면 서버가 임시 파일을 닫지 않았는지, 해당 파일에 대한 쓰기 권한이 있는지 확인해야 합니다. 접는 사람.

사례 2: max_execution_time 값은 충분히 커야 합니다. max_execution_time 변수는 PHP가 스크립트를 강제로 종료하기 전에 완료될 때까지 기다리는 시간을 초 단위로 설정합니다. 이 변수는 스크립트가 무한 루프에 들어갈 때 유용합니다. 그러나 이 기능은 완료하는 데 오랜 시간이 걸리는 합법적인 활동(예: 대용량 파일 업로드)이 있는 경우 작업이 실패할 수도 있습니다. 그러한 경우, 스크립트가 일부 중요한 프로세스(예: 90초로 설정)를 수행하는 동안 PHP가 스크립트를 종료하지 않도록 이 변수의 값을 늘리는 것을 고려해야 합니다.

max_execution_time = 90

php 함수에도 set_time_limit 함수가 있는데, 이는 위 설정과 동일한 효과를 가집니다. 둘의 차이점은 위의 내용은 php.ini 파일에 설정되어 있다는 점입니다. php 파일로 작성되었습니다. 따라서 페이지에서 set_time_limit를 사용하여 프로그램의 최대 실행 시간을 설정할 수도 있습니다. 예를 들어 unlimited: set_time_limit(0);

[권장 학습: "PHP Video Tutorial"]

사례 3: file_uploads = On 기본값은 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으로 문의하세요.