상세 컨텐츠

본문 제목

[PHP] 이미지 업로드 하기 PHP Warning: move_uploaded_file(uploadslinux ssh.PNG): failed to open stream: Permission denied

카테고리 없음

by 2hansoul 2021. 11. 5. 18:35

본문

반응형

PotoForm.php

더보기

<form action="Poto.php" method="post" name="MMSsend" enctype="multipart/form-data">
    <input type="file" name="fileToUpload" id="fileToUpload">
    <input type="submit" value="Upload Image" name="submit">

Poto.php

더보기

<?php
include "dbconnMS.php";

//업로드
$target_dir = "uploads";
$target_file = $target_dir . basename($_FILES["fileToUpload"]["name"]);
$uploadOk = 1;
$imageFileType = strtolower(pathinfo($target_file,PATHINFO_EXTENSION));
// 이미지파일이 맞는지 아닌지 체크  받아온 값을 isset으로 null 값인지 아닌지 체크
if(isset($_POST["submit"])) {
    $check = getimagesize($_FILES["fileToUpload"]["tmp_name"]);//getimagesize('이미지파일명')함수는 지정된 이미지 파일의 크기를 확인해서 파일타입과 이미지의 크기에 대한 정보를 출력해준다. 배열 형태로 출력을 한다.
    if($check !== false) {
        echo "파일이미지: - " . $check["mime"] . ".";
        $uploadOk = 1;
    } else {
        echo "파일이 이미지가 아닙니다.";
        $uploadOk = 0;
    }
}
echo $target_file;
//파일이 이미 업로드 되었는지 판단
if (file_exists($target_file)) {
    echo "이미 업로드 됐음.";
    $uploadOk = 0;
}
// 파일 사이즈 크기 판단
if ($_FILES["fileToUpload"]["size"] > 5000000) {
    echo "파일 크기가 너무 크다 .";
    $uploadOk = 0;
}
// 파일 형식이 맞는지 판단
if($imageFileType != "jpg" && $imageFileType != "png" && $imageFileType != "jpeg"
&& $imageFileType != "gif" ) { 
    echo "jpg,png,jpeg,gif 파일만 업로드 가능합니다.";
    $uploadOk = 0;
}
// 위 3개 판단을 한걸 uploadOk를 0으로 받아주고 업로드 실패 메시지
if ($uploadOk == 0) {
    echo "업로드 실패 했습니다";
// if everything is ok, try to upload file
} else {
    if (move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], $target_file)) {   //move_uploaded_file(파일,옮겨질 경로) 서버로 전송된 파일을 저장할 때 사용하는 함수 파일을 지정한 경로에 저장되게 해줌
echo "<p>The file ". basename( $_FILES["fileToUpload"]["name"]). " 업로드 되었습니다.</p>";
echo "<br><img src=/test/uploads". basename( $_FILES["fileToUpload"]["name"]). ">";
echo "<br><button type='button' onclick='history.back()'>돌아가기</button>";

} else {
        echo "<p>파일 업로드 실패 하였습니다</p>";
echo "<br><button type='button' onclick='history.back()'>돌아가기</button>";
    }
}
?>

소스만 복붙하여 하면 파일 경로를 잡아주지 않았기 때문에 실행이 안된다 자신에 서버에서 디렉토리를 만들어

줘야 된다

경로 설정 후 찍어 보면 서버에 업로드가 되어 있다 

업로드한 파일 확인이 가능함&nbsp;

PHP Warning:  move_uploaded_file(uploadslinux ssh.PNG): failed to open stream: Permission denied in

파일을 업로드 후 정상적으로 업로드 안되고 이런 오류가 뜬다면 디렉토리에 권한이 없어서 안되는거

파일 업로드시 권한을 다 부여 chmod 777다 부여 한다

ex) 근데 이렇게 디렉토리에 모든권한을 부여하면 안정성이 떨어질 것 같은데 어짜피 가상서버니 권한을 다 부여 해주면 될듯

 

//주석으로 거의 설명을 달아놓긴 했는데 혹시나 궁금한 건 댓글로 말해주세요

 

반응형

댓글 영역