test Errore PHP-Caricamento di un file




upload file php github (6)

Sto cercando di scrivere del php per caricare un file in una cartella sul mio server web. Ecco cosa ho:

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

Sto ricevendo questi errori:

Attenzione: move_uploaded_file (./ test.txt) [function.move-upload-file]: impossibile aprire lo stream: autorizzazione negata in E: \ inetpub \ vhosts \ mywebsite.com \ httpdocs \ dump \ upload.php sulla riga 3

Attenzione: move_uploaded_file () [function.move-upload-file]: impossibile spostare 'C: \ WINDOWS \ Temp \ phpA30E.tmp' in './test.txt' in E: \ inetpub \ vhosts \ mywebsite.com \ httpdocs \ dump \ upload.php sulla riga 3

Avvertenza: non è possibile modificare le informazioni dell'intestazione - intestazioni già inviate da (l'output è iniziato da E: \ inetpub \ vhosts \ mywebsite.com \ httpdocs \ dump \ upload.php: 3) in E: \ inetpub \ vhosts \ mywebsite.com \ httpdocs \ dump \ upload.php sulla riga 4

PHP versione 4.4.7 Esecuzione di IIS su una casella di Windows. Questo particolare file / cartella ha 777 permessi.

Qualche idea?


Un'altra cosa da considerare è il separatore di directory, si sta utilizzando / in una finestra di Windows.


Creare una cartella denominata "immagine" con permesso di cartella 777

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

Oh mio Dio

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

Non farlo. $_FILES['file']['name'] potrebbe essere ../../../../boot.ini o un numero qualsiasi di cose cattive. Non dovresti mai fidarti di questo nome. Dovresti rinominare il file qualcos'altro e associare il nome originale al tuo nome casuale. Utilizzare come minimo il basename($_FILES['file']['name']) .


Prova ad aggiungere un percorso. Il seguente codice funziona per me:

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

Attenzione: move_uploaded_file () [function.move-upload-file]: impossibile spostare 'C: \ WINDOWS \ Temp \ phpA30E.tmp' in './people.xml' in E: \ inetpub \ vhosts \ mywebsite.com \ httpdocs \ dump \ upload.php sulla riga 3

è la linea importante che dice che non puoi mettere il file dove lo vuoi e questo normalmente significa un problema di permessi

controlla il processo di esecuzione dell'app (normalmente il processo webserver per php) ha il diritto di scrivere un file lì.

MODIFICARE:

aspetta un po 'ho saltato la pistola un po' il percorso del file nella prima riga è corretto?


Dato che è Windows, non esiste un vero 777. Se stai usando chmod , controlla i commenti relativi a Windows.

Verifica che l'account IIS possa accedere (leggere, scrivere, modificare) queste due cartelle:

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




upload