Pregunta

Estoy tratando de escribir algo de PHP para subir un archivo a una carpeta en mi servidor web.He aquí lo que tengo:

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

Estoy recibiendo estos errores:

Advertencia:move_uploaded_file(./test.txt) [function.mover-cargado de archivo]:failed to open stream:Permiso denegado en E:\inetpub\vhosts\mywebsite.com\httpdocs\dump\upload.php en la línea 3

Advertencia:move_uploaded_file() [function.mover-cargado de archivo]:Incapaz de moverse 'C:\WINDOWS emp\phpA30E.tmp' a './test.txt' en E:\inetpub\vhosts\mywebsite.com\httpdocs\dump\upload.php en la línea 3

Advertencia:No puede modificar la información de cabecera - cabeceras ya enviado por (la producción empezó en E:\inetpub\vhosts\mywebsite.com\httpdocs\dump\upload.php:3) en E:\inetpub\vhosts\mywebsite.com\httpdocs\dump\upload.php en la línea 4

PHP versión 4.4.7 Ejecutando IIS en un cuadro de Windows.Esta particular de archivo/carpeta tiene permisos 777.

Alguna idea?

¿Fue útil?

Solución

Como es Windows, no es real 777.Si estás usando chmod, compruebe las Ventanas relacionadas con los comentarios.

Compruebe que la Cuenta de IIS puede acceder (leer, escribir, modificar) estas dos carpetas:

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

Otros consejos

OMG

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

No hagas eso. $_FILES['file']['name'] podría ser ../../../../boot.ini o cualquier número de cosas malas.Nunca se debe confiar en este nombre.Usted debe cambiar el nombre del archivo a otra cosa y asociar el nombre original con su nombre al azar.En un uso mínimo basename($_FILES['file']['name']).

Trate de añadir una ruta de acceso.El siguiente código me funciona:

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

Advertencia:move_uploaded_file() [function.mover-cargado de archivo]:Incapaz de moverse 'C:\WINDOWS emp\phpA30E.tmp' a './people.xml' en E:\inetpub\vhosts\mywebsite.com\httpdocs\dump\upload.php en la línea 3

es la línea más importante que dice que no puede poner el archivo donde quieras y esto normalmente significa un problema de permisos

comprobar el proceso de ejecución de la aplicación (normalmente, el proceso de los servidores web para php) tiene los derechos para escribir un archivo de allí.

EDITAR:

esperen un poco Me saltó el arma un poco es la ruta de acceso del archivo en la primera línea correcta?

Otro piensa que se observa es su separador de directorio, usted está utilizando una caja de Windows..

Agregar el usuario de IIS en el 'dump' carpetas de seguridad persmissions grupo, y dar acceso de lectura/escritura.

Crear una carpeta llamada "imágenes" con permiso de carpeta 777

<?php
    move_uploaded_file($_FILES['file']['tmp_name'],"image/".$_FILES['file']['name']);
?>
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top