>  기사  >  백엔드 개발  >  PHP 파일 업로드 실패에 대한 해결책은 무엇입니까?

PHP 파일 업로드 실패에 대한 해결책은 무엇입니까?

爱喝马黛茶的安东尼
爱喝马黛茶的安东尼원래의
2019-09-28 16:06:364772검색

PHP 파일 업로드 실패에 대한 해결책은 무엇입니까?

왜 대용량 파일 업로드는 항상 실패하는데, 작은 파일 업로드에는 문제가 없는 걸까요? 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 입문 튜토리얼"

참고: php 함수에는 set_time_limit 함수도 있으며, 위의 설정은 동일하지만 둘의 차이점은 위의 설정은 php.ini 파일에 설정되고 set_time_limit는 php 파일에 기록된다는 것입니다. 따라서 페이지에서 set_time_limit를 사용하여 프로그램의 최대 실행 시간을 설정할 수도 있습니다. 예를 들어 무제한 시간: set_time_limit(0);

세 번째 경우: file_uploads = On. 켜져 있으면 HTTP를 통한 파일 업로드 허용을 의미합니다. 이 옵션은 꺼짐으로 설정할 수 없습니다.

네 번째 경우: 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로 설정하면 됩니다.

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

max_input_time = 90

Case 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으로 문의하세요.