我正在尝试编写一些PHP以将文件上传到Web服务器上的文件夹。 这是我所拥有的:

<?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()[function.move-uploaded-file]:无法将E:\\ inetpub \\ vhosts \\ mywebsite.com \\中的'C:\\ WINDOWS \\ Temp \\ phpA30E.tmp'移动到'./test.txt'第3行上的httpdocs \\ dump \\ upload.php

警告:无法修改标头信息-已发送的标头(在E:\\ inetpub \\ vhosts \\ mywebsite.com \\ httpdocs \\中的输出(从E:\\ inetpub \\ vhosts \\ mywebsite.com \\ httpdocs \\ dump \\ upload.php:3开始输出)第4行的dump \\ upload.php

PHP版本4.4.7在Windows框中运行IIS。 该特定文件/文件夹具有777权限。

有任何想法吗?

===============>>#1 票数:16

我的天啊

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

不要那样做 $_FILES['file']['name']可以是../../../../boot.ini或任何数量的坏东西。 您永远不要相信这个名字。 您应该将文件重命名为其他名称,并将原始名称与您的随机名称相关联。 至少使用basename($_FILES['file']['name'])

===============>>#2 票数:7 已采纳

由于它是Windows,所以没有真正的777。如果使用chmod ,请检查与Windows相关的注释。

检查IIS帐户是否可以访问(读取,写入,修改)这两个文件夹:

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

===============>>#3 票数:3

尝试添加路径。 以下代码对我有用:

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

===============>>#4 票数:1

将IIS用户添加到“转储”文件夹安全权限组中,并授予其读/写访问权限。

===============>>#5 票数:1

警告:move_uploaded_file()[function.move-uploaded-file]:无法将E:\\ inetpub \\ vhosts \\ mywebsite.com \\中的'C:\\ WINDOWS \\ Temp \\ phpA30E.tmp'移动到'./people.xml'第3行上的httpdocs \\ dump \\ upload.php

是重要的一行,它表明您不能将文件放在所需的位置,这通常意味着权限问题

检查运行该应用程序的进程(通常是php的webservers进程)是否有权在其中写入文件。

编辑:

稍等一下,我跳了一下枪,第一行中文件的路径正确吗?

===============>>#6 票数:1

要观察的另一个想法是,您在Windows框中使用/来分隔目录。

===============>>#7 票数:0

创建一个具有文件夹权限777名为“ image”的文件夹

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

  ask by Steve Willard translate from so

未解决问题?本站智能推荐: