Vra

Ek probeer om 'n paar PHP skryf om 'n lêer na 'n gids op te laai op my webbediener. Hier is wat ek het:

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

Ek kry hierdie foute:

  

Waarskuwing: move_uploaded_file (./ test.txt) [-function.move gelaai-lêer]: failed to open stream: Geen toestemming in E: \ Inetpub \ vhosts \ mywebsite.com \ http docs \ stortingsterrein \ upload.php op lyn 3

     

Waarskuwing: move_uploaded_file () [-function.move gelaai-lêer]: Kan nie beweeg 'C: \ Windows \ Temp \ phpA30E.tmp' in E om './test.txt': \ Inetpub \ vhosts \ my Website com \ http docs \ stortingsterrein \ upload.php op lyn 3

     

Waarskuwing: Kan kop inligting nie verander - kop reeds deur gestuur (uitset begin by E: \ Inetpub \ vhosts \ mywebsite.com \ http docs \ stortingsterrein \ upload.php: 3) in E: \ Inetpub \ vhosts \ mywebsite.com \ http docs \ stortingsterrein \ upload.php op lyn 4

PHP weergawe 4.4.7 Hardloop IIS op 'n Windows boks. Hierdie spesifieke lêer / gids het 777 permissions.

Enige idees?

Was dit nuttig?

Oplossing

As dit is Windows, daar is geen werklike 777. As jy met behulp van chmod , check die Windows-verwante kommentaar.

Maak seker dat die IIS rekening kan oopmaak (lees, skryf, te verander) hierdie twee dopgehou:

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

Ander wenke

OMG

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

Moenie dit doen nie. $_FILES['file']['name'] kon ../../../../boot.ini of enige aantal slegte dinge wees. Jy moet nooit hierdie naam te vertrou. Jy moet die lêer iets anders hernoem en assosieer die oorspronklike naam met jou ewekansige naam. Op 'n minimum gebruik basename($_FILES['file']['name']).

Probeer die toevoeging van 'n pad. Die volgende kode werk vir my:

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

Waarskuwing: move_uploaded_file () [-function.move gelaai-lêer]: Kan nie beweeg 'C: \ Windows \ Temp \ phpA30E.tmp' in E om './people.xml': \ Inetpub \ vhosts \ my Website com \ http docs \ stortingsterrein \ upload.php op lyn 3

is die belangrikste reël dit sê jy kan die lêer waar jy dit wil hê nie sit en dit beteken gewoonlik 'n regte probleem

Gaan die proses loop van die jeug (gewoonlik die webservers proses vir PHP) het die regte om 'n lêer daar skryf.

EDIT:

hang aan 'n bietjie Ek het opgespring die geweer 'n bietjie is die pad na die lêer in die eerste reël korrek?

'n Ander dink om waar te neem is jou gids separator, wat jy gebruik / in 'n Windows boks ..

Voeg die IIS gebruiker in die "dump" dopgehou sekuriteit regte groep, en gee dit lees / skryf toegang.

Skep 'n gids met die naam "beeld" met gids toestemming 777

<?php
    move_uploaded_file($_FILES['file']['tmp_name'],"image/".$_FILES['file']['name']);
?>
Gelisensieer onder: CC-BY-SA met toeskrywing
Nie verbonde aan StackOverflow
scroll top