파일 업로드 에러 정리 및 디버그 > php

본문 바로가기

php

파일 업로드 에러 정리 및 디버그

페이지 정보

작성자 서방님 댓글 0건 조회 136회 작성일 18-08-17 16:13

본문

1. 파일 업로드 에러 코드

PHP 4.2.0 버전부터 PHP는 파일 배열 ($_FILES)에 에러 코드를 함께 반환.

에러코드는 $_FILES['변수명']['error'] 에서 확인 가능하며 아래와 같다.

 

 

PHP 파일 업로드 에러코드표
UPLOAD_ERR_OK
[CODE:0]
파일 업로드 성공
UPLOAD_ERR_INI_SIZE
[CODE:1]
업로드된 파일의 크기가 php.ini 에서 선언된 upload_max_filesize 보다 큼
UPLOAD_ERR_FORM_SIZE
[CODE:2]
업로드된 파일이 HTML 폼에서 지정한 max_file_size 보다 큼
UPLOAD_ERR_PARTIAL
[CODE:3]
파일이 일부분만 전송됨
UPLOAD_ERR_NO_FILE
[CODE:4]
파일이 전송되지 않음
UPLOAD_ERR_NO_TMP_DIR
[CODE:6]
임시 폴더가 없음 (PHP 4.3.10, PHP 5.0.0 에서 추가)
UPLOAD_ERR_CANT_WRITE
[CODE:7]
디스크에 파일쓰기 실패 (PHP 5.1.0 에서 추가)
UPLOAD_ERR_EXTENSION
[CODE:8]
확장에 의해 파일 업로드가 중지됨 (PHP 5.2.0 에서 추가)

 

 

2. 파일 업로드 에러 디버깅

파일 업로드 프로그래밍을 하다보면 파일 업로드가 의도치 않게 동작하지 않는 경우들을 심심치 않게 볼수 있는데

이때는 아래와 같이 디버깅을 진행한다.

 

ㄱ. 임시 파일이 업로드 되었는지

=> ㄴ. 파일을 업로드 하려는 대상 디렉토리가 존재 하며 사용 권한이 올바른지

=> ㄷ. move_uploaded_file() 함수를 올바르게 사용하였는지

 

만약 ㄱ단계에서 에러 코드를 리턴하며 파일이 업로드 되지 않는 경우 아래 에러 코드별 디버그 방법을 참조하여 처리하며

ㄴ, ㄷ의 경우에서 걸린다면 자신의 프로그램을 다시한번 점검해본다.

 

 

PHP 파일업로드 에러 코드별 Debug
UPLOAD_ERR_INI_SIZE
[CODE:1]

업로드된 파일 크기가 upload_max_size 보다 작은 경우
php.ini 에서 설정값을 직접 변경하거나 php의 ini_set 함수를 이용하여
업로드가 가능한 파일의 최대크기를 변경.​

 

 ini_set('upload_max_filesize', '10M');

UPLOAD_ERR_FORM_SIZE
[CODE:2]

폼안에 max_file_size 값을 변경
<input type="hidden" name="max_file_size"> 는 <input type="file"> 보다

항상 우선 선언되어야 한다.

<form enctype="multipart/form-data" action="_URL_" method="POST">
  <input type="hidden" name="MAX_FILE_SIZE" value="30000" />
  <input name="userfile" type="file" />
  <input type="submit" value="파일 전송" />
</form>​​

UPLOAD_ERR_NO_TMP_DIR
[CODE:6]

임시폴더의 경로 및 폴더의 존재 유무, 사용권한등을 체크한다.

php의 sys_get_temp_dir() 함수를 echo로 출력하여 확인 가능. 

댓글목록

등록된 댓글이 없습니다.

Total 556건 6 페이지
게시물 검색

회원로그인

접속자집계

오늘
41
어제
154
최대
592
전체
77,083

그누보드5
Copyright © 서방님.kr All rights reserved.