PHP가 대용량 파일을 업로드할 수 없는 문제에 대한 해결 방법: 1. 파일을 업로드할 때 파일이 저장된 임시 디렉터리를 엽니다. 2. max_execution_time 값을 늘립니다. 3. file_uploads를 on으로 수정합니다. 업로드; 5, post_max_size 값 등을 늘립니다.
이 글의 운영 환경: 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 파일에 설정되어 있는 반면 set_time_limit는 .php 파일. 따라서 페이지에서 set_time_limit를 사용하여 프로그램의 최대 실행 시간을 설정할 수도 있습니다. 예를 들어 unlimited: set_time_limit(0);
Case 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가 대용량 파일을 업로드할 수 없으면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!