$_FILES는 HTTP 파일 업로드 변수로, HTTP POST 매서드를 통해 현재 스크립트에 업로드된 항목의 배열이다.
$_FILES 업로드 시 발생할 수 있는 에러 종류를 알아보도록 한다.
오류 값 찾기 (PHP 디버깅 방법)
php는 error_log() 함수를 통해 디버깅할 수 있다.
$_FILES['[userFileName]']은 배열이므로 error_log(print_r($_FILES['[userFileName]'], TRUE) 와 같이 사용해야한다.
(또는 $_FILES['[userFileName]']['error']로 error 값만 따로 찾아 출력할 수 있다.)
apache2 환경에서의 error log 파일의 경로는 아래와 같다.
sudo tail -f /var/log/apache2/error.log
아래의 예시를 살펴보자.
Array\n(\n [name] => name [type] => \n [tmp_name] => \n [error] => 1\n [size] => 0\n)\n, referer: |
[error] => 오류코드로, 예시의 오류코드는 1이 된다.
오류 메세지 설명
UPLOAD_ERR_OK
Error Code : 0;
오류가 없으며 파일이 성공적으로 업로드 되었다.
UPLOAD_ERR_INI_SIZE
Error Code : 1;
업로드 된 파일이 php.ini의 upload_max_filesize 지시문을 초과한다.
UPLOAD_ERR_FROM_SIZE
Error Code : 2;
업로드 된 파일이 HTML 양식에 지정된 max_file_size 지시문을 초과하였다.
UPLOAD_ERR_PARTIAL
Error Code : 3;
업로드 된 파일이 부분적으로만 업로드 되었다.
UPLOAD_ERR_NO_FILE
Error Code : 4;
업로드 된 파일이 없다.
UPLOAD_ERR_TMP_DIR
Error Code : 6;
임시 폴더가 없다. PHP 5.0.3에서 도입되었다.
UPLOAD_ERR_CANT_WRITE
Error Code : 7;
디스크에 파일을 쓰지 못했다. PHP 5.1.0에서 도입되었다.
UPLOAD_ERR_PARTIAL
Error Code : 8;
PHP 확장으로 인해 파일 업로드가 중지되었다. PHP는 파일 업로드를 중단시킨 확장자를 확인하는 방법을 제공하지 않는다. phpinfo()를 사용해 로드된 확장 목록을 살펴보는 것이 도움이 될 수도 있다. PHP 5.2.0에서 도입되었다.
참고 자료 :
'BackEnd > Server' 카테고리의 다른 글
[Docker] MYSQL Database 로컬 위치로 백업하기 (0) | 2021.05.18 |
---|---|
[Ubuntu 18.04.5] PHP에서 Anaconda 환경변수 사용하기 (0) | 2021.03.23 |
[Apache2] .htaccess 설정 파일 사용하기 (4) | 2021.02.07 |
AWS EC2 .pem 파일없이 접속하기 (0) | 2021.02.06 |
[SSL] Letsencrypt SSL 인증서 수동 갱신하기 (0) | 2021.01.19 |
댓글