문제

내 웹 서버의 폴더에 파일을 업로드하기 위해 PHP를 작성하려고 합니다.내가 가진 것은 다음과 같습니다.

<?php
    if ( !empty($_FILES['file']['tmp_name']) ) {
        move_uploaded_file($_FILES['file']['tmp_name'], './' . $_FILES['file']['name']);
        header('Location: http://www.mywebsite.com/dump/');
        exit;
    }
?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html>
    <head>
        <title>Dump Upload</title>
    </head>
    <body>
        <h1>Upload a File</h1>
        <form action="upload.php" enctype="multipart/form-data" method="post">
            <input type="hidden" name="MAX_FILE_SIZE" value="1000000000" />
            Select the File:<br /><input type="file" name="file" /><br />
            <input type="submit" value="Upload" />
        </form>
    </body>
</html>

다음과 같은 오류가 발생합니다.

경고:move_uploaded_file(./test.txt) [function.move-uploaded-file]:스트림을 열지 못했습니다:3행의 E:\inetpub\vhosts\mywebsite.com\httpdocs\dump\upload.php에서 권한이 거부되었습니다.

경고:move_uploaded_file() [함수.이동-업로드-파일]:3행의 E:\inetpub\vhosts\mywebsite.com\httpdocs\dump\upload.php에서 'C:\WINDOWS emp\phpA30E.tmp'를 './test.txt'로 이동할 수 없습니다.

경고:헤더 정보를 수정할 수 없습니다. 헤더는 E:\inetpub\vhosts\mywebsite.com\httpdocs\dump\upload.php:3에서 이미 E:\inetpub\vhosts\mywebsite.com\httpdocs\dump\에서 전송되었습니다. 4번째 줄에 upload.php

PHP 버전 4.4.7 Windows 상자에서 IIS 실행.이 특정 파일/폴더에는 777 권한이 있습니다.

어떤 아이디어가 있나요?

도움이 되었습니까?

해결책

Windows이기 때문에 실제 777이 없습니다.당신이 사용하는 경우 chmod, Windows 관련 설명을 확인하세요.

IIS 계정이 다음 두 폴더에 액세스(읽기, 쓰기, 수정)할 수 있는지 확인하세요.

E:\inetpub\vhosts\mywebsite.com\httpdocs\dump\
C:\WINDOWS\Temp\

다른 팁

어머나

move_uploaded_file($_FILES['file']['tmp_name'], './' . $_FILES['file']['name']);

그러지 마세요. $_FILES['file']['name'] 될 수 있다 ../../../../boot.ini 아니면 여러 가지 나쁜 일들.이 이름을 절대 믿어서는 안됩니다.파일 이름을 다른 것으로 바꾸고 원래 이름을 임의의 이름과 연결해야 합니다.최소한의 사용으로 basename($_FILES['file']['name']).

경로를 추가해 보세요.다음 코드는 나에게 효과적입니다.

<?php

if ( !empty($_FILES['file']) ) {
    $from = $_FILES['file']['tmp_name'];
    $to = dirname(__FILE__).'/'.$_FILES['file']['name'];

    if( move_uploaded_file($from, $to) ){
        echo 'Success';   
    } else {
        echo 'Failure';   
    }

    header('Location: http://www.mywebsite.com/dump/');
    exit;
}
?>

경고:move_uploaded_file() [함수.이동-업로드-파일]:3행의 E:\inetpub\vhosts\mywebsite.com\httpdocs\dump\upload.php에서 'C:\WINDOWS emp\phpA30E.tmp'를 './people.xml'로 이동할 수 없습니다.

원하는 위치에 파일을 넣을 수 없다는 중요한 줄이며 이는 일반적으로 권한 문제를 의미합니다.

앱을 실행하는 프로세스(일반적으로 PHP의 경우 웹서버 프로세스)에 파일을 쓸 수 있는 권한이 있는지 확인하세요.

편집하다:

조금씩 매달려서 나는 총을 조금 뛰어 올렸다. 첫 번째 줄의 파일의 경로는 맞습니까?

관찰해야 할 또 다른 생각은 디렉토리 구분 기호입니다. Windows 상자에서 /를 사용하고 있습니다.

'dump' 폴더 보안 권한 그룹에 IIS 사용자를 추가하고 읽기/쓰기 액세스 권한을 부여합니다.

폴더 권한으로 "image"라는 폴더를 만듭니다. 777

<?php
    move_uploaded_file($_FILES['file']['tmp_name'],"image/".$_FILES['file']['name']);
?>
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top