2012-06-21 7 views
1

HTML 폼과 간단한 PHP 스크립트를 통해 기본 업로드를 시도하지만 move_uploaded_file 함수는 항상 false를 반환합니다. 나는 디렉토리에서 "chmod 777"을 실행했다. (나는 실제로이 작업을 할 때 안전을 더 다룰 것이다. "그리고"upload "디렉토리는 실제로 htdocs 폴더에있다. (우분투 서버와 리눅스 민트에서는/var/www). move_uploaded_file이 Linux Mint의 Apache 서버에서 작동하지 않습니다.

<?php 
    if ($_FILES["file"]["error"] == 0){ 
     if (file_exists("upload/" . $_FILES["file"]["name"])){ 
      echo $_FILES["file"]["name"] . " already exists. "; 
     }else{ 
      if(move_uploaded_file($_FILES["file"]["tmp_name"],"/var/www/upload/" . $_FILES["file"]["name"])){ 
       echo "Stored in: " . "upload/" . $_FILES["file"]["name"]; 
      }else{ 
       echo "Failed to move uploaded file"; 
      } 
     } 
    }else{ 
     echo "Return Code: " . $_FILES["file"]["error"]; 
    } 
?> 

난 작은 JPEG를 업로드하려고

, 나는 "파일을 이동하지 못했습니다"GET ...

<html> 
<body> 

<form action="upload_file.php" method="post" 
enctype="multipart/form-data"> 
<label for="file">Filename:</label> 
<input type="file" name="file" id="file" /> 
<br /> 
<input type="submit" name="submit" value="Submit" /> 
</form> 

</body> 
</html> 

... 그리고 upload_file.php : 여기

양식입니다 어떤 생각?

+0

** 많은 양의 보안 예방 조치를 취하지 않았다면 파일 저장에'[ 'name']'매개 변수를 사용하지 마십시오. 그 이름 값은 원격 사용자의 제어하에 완전히 있으며, 사용자가 서버의 모든 파일을 쓸어 넘길 때 맹목적으로 사용합니다. 예 : 그들은 업로드를 해킹하고 그들의 파일 이름을'../../../../../ etc/passwd' 할 수 있습니다. –

+0

전체 오류보고를 사용 가능하게하고 오류 메시지를 파일에 기록하십시오. 자세한 내용을보아야하므로 필요한 추측 량이 줄어 듭니다. –

답변

2

스크립트는 대상 디렉토리에 쓸 수 있어야합니다.이 경우/var/www/upload/(사용 권한을 변경 한 디렉토리입니까?)입니다. 또한 가능한 문제 및 보안 문제 일 수있는 클라이언트의 로컬 이름을 사용하고 있습니다 (반드시 여기에있는 이유는 아닙니다).

+1

와우 .../var/www /에 대한 사용 권한을 변경했고 재귀 적으로 그렇게했다고 생각했습니다 ... 아뇨./var/www/upload에 대한 사용 권한이 구체적으로 변경되었으며 이제는 작동합니다 ... 감사합니다! – J3RN

관련 문제