php.ini의 파일 업로드 기능에 대한 구성 옵션 설명
텍스트 도구(EditPlus 권장)를 사용하여 php.ini 구성 파일을 열고 파일 업로드를 찾으세요. 다음 3가지 옵션이 있습니다. 이 영역에서:
file_uploads = On
HTTP 파일 업로드 허용 여부. HTTP 파일 업로드를 허용하려면 기본값이 On이며, 이 옵션을 Off로 설정할 수 없습니다.
upload_tmp_dir =
파일 업로드를 위한 임시 저장 디렉터리입니다. 지정하지 않으면 PHP는 시스템의 기본 임시 디렉터리를 사용합니다. 이 옵션은 기본적으로 비어 있습니다. 이 옵션은 PHP 실행 환경을 수동으로 구성할 때 잊어버리기 쉽습니다. 이 옵션을 구성하지 않으면 이 옵션에 upload_tmp_dir = "와 같은 값을 할당해야 합니다. d:/fileuploadtmp". D 드라이브 디렉터리에 fileuploadtmp 디렉터리가 있고, 이 디렉터리에 읽기 및 쓰기 권한이 부여되었음을 의미합니다.
upload_max_filesize = 2M
업로드되는 파일의 최대 크기입니다. 이 옵션의 기본값은 2M입니다. 즉, 파일 업로드 크기는 2M입니다. 50M 파일을 업로드하려면 upload_max_filesize = 50M를 설정해야 합니다.
하지만 upload_max_filesize = 50M로 설정하는 것만으로는 대용량 파일의 업로드 기능을 구현할 수 없습니다. php.ini 파일에서 post_max_size 옵션도 수정해야 합니다.
php.ini에서 Data Handling을 계속 검색하세요. 이 영역에는 1개의 옵션이 있습니다:
post_max_size = 8M
PHP가 POST Maximum 형식을 통해 수신할 수 있는 항목을 나타냅니다. 값(양식의 모든 값 포함) 기본값은 8M입니다. POST 데이터가 제한을 초과하면 $_POST 및 $_FILES가 비어 있게 됩니다.
대용량 파일을 업로드하려면 이 옵션의 값을 upload_max_filesize 옵션의 값보다 크게 설정해야 합니다. 예를 들어 upload_max_filesize = 50M로 설정하면 post_max_size = 100M로 설정할 수 있습니다.
또한, 메모리 제한이 활성화된 경우 해당 값은 memory_limit 옵션의 값보다 작아야 합니다.
계속해서 php.ini에서 리소스 제한을 찾으세요. 이 영역에는 3가지 옵션이 있습니다:
max_execution_time = 30
실행할 각 PHP 페이지의 최대 시간 값 (단위초), 기본값은 30초입니다. 50M 파일과 같은 더 큰 파일을 업로드하는 경우 완료하는 데 몇 분이 걸릴 수 있습니다. 그러나 PHP 페이지의 기본 최대 실행 시간은 30초를 초과하면 스크립트 실행이 중지됩니다. 이로 인해 웹 페이지를 열 때 사용할 수 없게 됩니다. 따라서 max_execution_time = 600과 같이 더 큰 값을 설정할 수 있습니다. 0으로 설정하면 시간 제한이 없음을 의미합니다.
max_input_time = 60
요청 데이터를 구문 분석하기 위해 각 PHP 스크립트에서 사용하는 시간(초)이며 기본값은 60초입니다. 대용량 파일을 업로드할 때 이 값을 더 크게 설정할 수 있습니다. 0으로 설정하면 시간 제한이 없음을 의미합니다.
memory_limit = 128M
이 옵션은 단일 PHP 스크립트가 적용할 수 있는 최대 메모리 공간을 설정하는 데 사용됩니다. 이는 잘못 작성된 스크립트가 서버에서 사용 가능한 메모리를 차지하는 것을 방지하는 데 도움이 됩니다. 메모리 제약 조건이 필요하지 않으면 이 값을 -1로 설정합니다.
php5.2.0의 기본 버전은 8M입니다. php.5.2.0의 기본 버전은 16M입니다. php 5.2.0 이후 버전은 기본적으로 128M입니다.
php.ini 파일 업로드 기능 구성 예시
50M의 대용량 파일을 업로드한다고 가정해 보겠습니다. php.ini를 다음과 같이 구성합니다:
file_uploads = On
upload_tmp_dir = "d:/fileuploadtmp"
upload_max_filesize = 50M
post_max_size = 100M
max_execution_time = 600
max_input_time = 600
memory_limit = 128M
팁: memory_limit > post_max_size > upload_max_filesize를 유지해야 합니다.
이 예는 참고용일 뿐이며 실제 상황에 따라 조정할 수 있습니다.