PHP错误 - 上传文件

Ste*_*ard 14 php iis upload

我正在尝试编写一些PHP来将文件上传到我的网络服务器上的文件夹.这就是我所拥有的:

<?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>
Run Code Online (Sandbox Code Playgroud)

我收到这些错误:

警告: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权限.

有任何想法吗?

jmu*_*llo 16

我的天啊

move_uploaded_file($_FILES['file']['tmp_name'], './' . $_FILES['file']['name']);
Run Code Online (Sandbox Code Playgroud)

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


Mic*_*tum 7

因为它是Windows,没有真正的777.如果您正在使用chmod,请检查与Windows相关的注释.

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

E:\inetpub\vhosts\mywebsite.com\httpdocs\dump\
C:\WINDOWS\Temp\
Run Code Online (Sandbox Code Playgroud)