간단한 양식 업로드 테스트를 할 때, 서버 측 PHP 스크립트에서 $_FILES 배열이 비어 있어 브라우저에서 업로드된 정보를 얻을 수 없습니다.
이유는 무엇입니까? Google을 통해 다음 웹을 통해:
PHP 업로드 파일의 빈 $_FILES 배열에 대한 솔루션
테스트 중에 직면한 상황은 다음에서 처음 설명됩니다. 기사의 한 가지 이유는 파일 업로드 양식에 enctype="multipart/form-data" 속성이 설정되어 있지 않기 때문입니다.
전체 텍스트는 아래에 다시 게시됩니다:
PHP에서 파일을 업로드할 때 빈 $_FILES 배열에 대한 해결 방법:
PHP를 파일 업로드용 애플리케이션으로 사용할 때 $_FILES가 백그라운드에서 인쇄될 때 빈 배열이 발견될 수 있습니다. 다음 두 가지 이유:
양식 유형 이유 또는 PHP 설정 문제:
1. 양식 유형:
업로드된 파일의 양식 인코딩 유형을 enctype="multipart/form-data"로 설정해야 하기 때문입니다. 빅데이터를 전송해야 하며 일반적인 제출 방법은 POST 입니다.
2. PHP 설정 문제:
PHP의 기본 post_max_size는 2M입니다. POST 데이터 크기가 post_max_size보다 크면 $_POST 및 $_FILES 슈퍼 전역 변수가 비어 있게 됩니다.
1. 일반적인 파일 업로드는 파일 크기가 매우 작지 않으면 5M 파일처럼 업로드하는 데 1분 이상 걸릴 수 있습니다. 하지만 PHP에서는 페이지의 기본 최대 실행 시간이 30초입니다. 30초를 초과하면 스크립트 실행이 중지됩니다. 이때 max_execution_time을 수정하고 php.ini에서 max_execution_time을 찾을 수 있습니다. 0(수정 가능한 범위는 PHP_INI_ALL) 0은 제한 없음을 의미합니다.
또는 PHP 파일 헤더에 ini_set('max_execution_time',0)을 설정합니다.
2. post_max_size를 수정하여 POST 데이터에 허용되는 최대 크기를 설정합니다. 이 설정은 파일 업로드에도 영향을 미칩니다. post_max_size를 찾습니다. (수정 가능한 범위는 PHP_INI_PHP_INI_PERDIR)
3. 많은 사람들이 두 번째 단계를 변경하지만 파일을 업로드할 때 여전히 최대값은 upload_max_filesize로 변경해야 합니다. 업로드된 파일의 최대 크기를 나타냅니다. upload_max_filesize를 찾아 기본값은 8M이고 upload_max_filesize = 100M로 변경합니다(수정 가능한 범위는 PHP_INI_PHP_INI_PERDIR)
또 주목해야 할 점은 post_max_size는 전체 표현식의 크기이고 upload_max_filesize는 업로드된 파일의 크기입니다. 후자보다 커야 합니다.