Vă mulțumim pentru susținere

Eroare PHP - Încărcarea unui fișier

Încerc să scriu câteva PHP pentru a încărca un fișier într-un folder de pe serverul meu de web. Iată ce am:

<?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;
    }
?>


<html>
    <head>
        <title>Dump Upload</title>
    </head>
    <body>
        

Upload a File

        <form action="upload.php" enctype="multipart/form-data" method="post">
            <input type="hidden" name="MAX_FILE_SIZE" value="1000000000" />
            Select the File:
<input type="file" name="file" />
<input type="submit" value="Upload" /> </form> </body> </html>

Am aceste erori:

Atenție: move_uploaded_file (./ test.txt) [function.move-uploaded-file]: nu a reușit să deschidă fluxul: Permisiunea a fost respinsă în E: \ inetpub \ vhosts \ mywebsite.com \ httpdocs \ dump \ upload.php linia 3

     

Atenție: move_uploaded_file() [function.move-uploaded-file]: Imposibil de mutat "C: \ WINDOWS \ Temp \ phpA30E.tmp" în "./test.txt" în E: \ inetpub \ vhosts \ mywebsite .com \ httpdocs \ dump \ upload.php pe linia 3

     

Avertisment: nu se pot modifica informațiile din antet - anteturile deja trimise de către (ieșirea a început la E: \ inetpub \ vhosts \ mywebsite.com \ httpdocs \ dump \ upload.php: 3) în E: \ inetpub \ vhosts \ mywebsite.com \ httpdocs \ dump \ upload.php pe linia 4

Versiunea PHP 4.4.7 Rularea IIS pe o cutie Windows. Acest anumit fișier / dosar are 777 de permisiuni.

Vreo idee?

0
adăugat editat
Vizualizări: 1

7 răspunsuri

Încercați să adăugați o cale. Următorul cod funcționează pentru mine:

<?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;
}
?>
0
adăugat

Deoarece este Windows, nu există niciun 777 real. Dacă utilizați chmod , verificați comentariile legate de Windows.

Verificați dacă contul IIS poate accesa (citi, scrie, modifica) aceste două dosare:

E:\inetpub\vhosts\mywebsite.com\httpdocs\dump\
C:\WINDOWS\Temp\
0
adăugat

Atenție: move_uploaded_file() [function.move-uploaded-file]: Nu se poate muta "C: \ WINDOWS \ Temp \ phpA30E.tmp" în "./people.xml" în E: \ inetpub \ vhosts \ mywebsite.com \ httpdocs \ dump \ upload.php pe linia 3

este linia importantă pe care o spuneți că nu puteți pune fișierul acolo unde doriți și aceasta înseamnă în mod normal o problemă de permisiuni

verificați procesul în care rulează aplicația (în mod normal, procesul webservers pentru php) are dreptul de a scrie un fișier acolo.

EDITAȚI | ×:

atârnă puțin Am sărit arma un pic este calea către dosar în prima linie corectă?

0
adăugat

Nu-mi vine să cred

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

Nu face asta. $ _ FILES ['file'] ['name'] ar putea fi ../../../../ boot.ini sau orice număr de lucruri rele. Nu trebuie să ai încredere în acest nume. Ar trebui să redenumiți fișierul altceva și să asociați numele original cu numele dvs. aleator. La un minim folosiți numele de bază ($ _ FILES ['file'] ['name']]) .

0
adăugat

Un alt gând să observați este separatorul dvs. de directoare, utilizați / într-o casetă Windows.

0
adăugat

Adăugați utilizatorul IIS în grupul de persistențe a dosarelor "dump" și dați-i accesul la citire / scriere.

0
adăugat

Create a folder named "image" with folder permission 777

<?php
    move_uploaded_file($_FILES['file']['tmp_name'],"image/".$_FILES['file']['name']);
?>
0
adăugat