[PHP] PHP 에서 move_uploaded_file 실패하는 경우


PHP 에서 move_uploaded_file 을 사용해서 서버에 파일업로드를 하려고 할 때, 기존에 이미 설정한 폴더가 아닌 새로운 폴더에 업로드 하고자하면 파일 업로드가 안되곤 합니다.

이 경우, 파일용량 제한때문이 아니라면 주로 리눅스 서버에서 해당 폴더의 권한이 제대로 설정되어 있지 않을 확률이 높습니다.


FTP 등이 아닌 웹 환경에서 파일업로드를 해야하는 경우, 사용자 본인이 아닌 아파치에게 쓰기 권한이 설정되어있어야 합니다.




서버에서 원하는 폴더에 권한을 757 (rwxr-xrwx) 로 설정해주거나,


Bash(CentOS)

[root@ upload_dir]# chmod 757 mingcho[디렉토리경로]


사용하는 툴에서 CHMOD 기능이 있는 경우 변경해주면 됩니다.



물론 변경 후에는 기타사용자에게 쓰기 권한이 주어지기 때문에, 무분별한 파일이 업로드 되지 않도록 확장자검사, 특수문자검사 등의 방어조치를 취해야합니다.


마지막으로 변경된 폴더로 업로드 해봅시다아.

사실은 move_uploaded_file 함수는 업로드개념보다는 함수명그대로 서버의 tmp 폴더 내부에 임시로 저장된 파일을 내가 원하는 경로로 이동시키는 함수입니다.


PHP

<?php define("UPLOAD_PATH", "/images/"); $tmp_name = $_FILES["name_attr"]["tmp_name"]; //임시저장된 파일을 $target = UPLOAD_PATH.time().$_FILES["name_attr"]["name"]; // /images/1210123112upload_file.jpg move_uploaded_file($tmp_name, $target); //저장 찰칵찰칵 ?>




+ Recent posts

티스토리 툴바