PHP错误-上载文件

PHP错误-上载文件,php,iis,upload,Php,Iis,Upload,我正在尝试编写一些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/');

我正在尝试编写一些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\u upload\u file(./test.txt)[function.move upload file]:无法打开流:第3行E:\inetpub\vhosts\mywebsite.com\httpdocs\dump\upload.php中的权限被拒绝


警告:move\u upload\u file()[function.move upload file]:无法将第3行E:\inetpub\vhosts\mywebsite.com\httpdocs\dump\upload.php中的“C:\WINDOWS\Temp\phpA30E.tmp”移动到“./test.txt”

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

PHP版本4.4.7 在Windows机箱上运行IIS。此特定文件/文件夹具有777权限


有什么想法吗?

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

重要的一行是它说你不能把文件放在你想要的地方,这通常意味着权限问题

检查运行应用程序的进程(通常是php的Web服务器进程)是否有权在那里写入文件

编辑:

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

因为是Windows,所以没有真正的777。如果正在使用,请检查与Windows相关的注释

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

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

尝试添加路径。以下代码适用于我:

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

OMG


不要那样做
$\u文件['file']['name']
可以是
。/../../../../boot.ini
或任何数量的坏东西。你不应该相信这个名字。您应该将文件重命名为其他名称,并将原始名称与随机名称关联。至少要使用
basename($\u FILES['file']['name'])
另一个需要注意的问题是目录分隔符,您正在使用/在Windows框中。

将IIS用户添加到“dump”folders security permissions组中,并授予其读/写权限。

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

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

我们使用下面的路径找到

{['DOCUMENT\u ROOT']+'文件夹路径'

让每个人都能完全访问文件夹解决了这个问题

确保不要在地址栏中显示地址。泄露地址毫无意义

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