Chang
417
2020-05-12 09:52:56
5
247

php 파일 업로드 질문 드립니다.


php를 배우는 초보입니다..

파일 업로드 샘플로 테스트를 하는중인데 아무리해도 파일이 폴더에 저장되지 

않고 있는데 도대체 이유를 모르겠네요 ..ㅠㅠ

저장 폴더는 root에 

excelFile (퍼미션은 777)

php.ini에 

file_uploads = On


Up_Load_Form.html

<form name="form1" method="post" enctype="multipart/form-data" action="File_Upload.php">
<table width="600" border="0" cellpadding="0" cellspacing="1" bgcolor="#CCCCCC">
<tr>
        <td colspan="2" bgcolor="#FFFFFF">PHP를 이용한 파일업로드 기능의 구현</td>
</tr>
<tr>
        <td width="150" align="center" bgcolor="#FFFFFF">업로드할 파일</td>
        <td width="464" bgcolor="#FFFFFF"><input type="file" name="myFile" size="60" /></td>
</tr>
<tr>
        <td colspan="2" bgcolor="#FFFFFF"><input type="submit" value="파일 업로드" />
        <input type="reset" value="취소" /></td>
</tr>
</table>
</form>


File_Upload.php

<?
//업로드한 파일을 저장할 디렉토리
$save_dir = "./excelFile";

//파일이 HTTP POST 방식을 통해 정상적으로 업로드되었는지 확인한다.
if(is_uploaded_file($_FILES["myFile"]["tmp_name"]))
{
   echo "업로드한 파일명 : ".$_FILES["myFile"]["name"] ."<br />";
   echo "업로드한 파일의 크기 : ".$_FILES["myFile"]["size"] ."<br />";
   echo "업로드한 파일의 MIME Type : ".$_FILES["myFile"]["type"] ."<br />";
   echo "임시 디렉토리에 저장된 파일명 : ".$_FILES["myFile"]["tmp_name"]."<br />";

   //파일을 저장할 디렉토리 및 파일명
   $dest = $save_dir . $_FILES["myFile"]["name"];

   //파일을 지정한 디렉토리에 저장
   if(!move_uploaded_file($_FILES["myFile"]["tmp_name"], $dest))
   {
      die("파일을 지정한 디렉토리에 저장하는데 실패했습니다.");
   }
}
?>


결과

업로드한 파일명 : S__3383554.jpg
업로드한 파일의 크기 : 288006
업로드한 파일의 MIME Type : image/jpeg
임시 디렉토리에 저장된 파일명 : /tmp/phpWYL9wN
파일을 지정한 디렉토리에 저장하는데 실패했습니다.




0
  • 답변 5

  • lee16
    56
    2020-05-12 10:19:24 작성 2020-05-12 10:22:23 수정됨


    is_writable($save_dir);

    위 코드로 권한 체크 해보시겠어요?

  • 개발초오보요
    74
    2020-05-12 11:59:07

    경로를 제대로 못 찾아서 그럴 수도 있습니다.

    저 같은 경우에는 $경로변수 =  $_SERVER["DOCUMENT_ROOT"]."/_upload/".$파일변수

    이런식으로 처리 합니다.

  • notelsh
    2
    2020-05-12 17:13:58

    $save_dir = "./excelFile";

    $dest = $save_dir . $_FILES["myFile"]["name"];

    $dest 출력시 값 ./excelFile파일명


    $save_dir = "./excelFile"; => $save_dir = "./excelFile/";

  • Chang
    417
    2020-05-12 21:15:03
    if (is_writable($save_dir)) {
       echo '쓰기 가능한 파일입니다.';
    }else{
       echo '쓰기 권한이 없는 파일입니다. 권한 0707, 0777로 바꿔주세요.';
    }


    $save_dir 의 절대 경로는 

    /var/www/html/excelFile/

    그래서 

    $save_dir = "./excelFile";

    퍼미션은 777인데도

    쓰기 권한이 없는 파일입니다. 권한 0707, 0777로 바꿔주세요.

    이유는 뭘까요? ㅠㅠ

  • lee16
    56
    2020-05-12 21:17:49

    상위 디렉토리 권한 체크해보세요

  • 로그인을 하시면 답변 을 등록할 수 있습니다.