PHP错误 - 上传文件

我正在尝试编写一些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;
    }
?>


<html>
    <head>
        <title>Dump Upload</title>
    </head>
    <body>
        

Upload a File

        <form action="upload.php" enctype="multipart/form-data" method="post">
            <input type="hidden" name="MAX_FILE_SIZE" value="1000000000" />
            Select the File:
<input type="file" name="file" />
<input type="submit" value="Upload" /> </form> </body> </html>

我收到这些错误:

警告:move_uploaded_file(./ test.txt)[function.move-uploaded-file]:无法打开流:权限在E:\ inetpub \ vhosts \ mywebsite.com \ httpdocs \ dump \ upload.php中被拒绝第3行

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

     

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

PHP版本4.4.7 在Windows机器上运行IIS。这个特定的文件/文件夹有777个权限。

有任何想法吗?

0
额外 编辑
意见: 1

7 答案

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

<?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;
}
?>
0
额外

因为它是Windows,所以没有真正的777.如果您使用 chmod ,检查Windows相关的评论。

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

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

警告: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进程)有权在那里写一个文件。

编辑:

挂一点 我跳了一下枪是第一行文件的路径是否正确?

0
额外

我的天啊

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

不要这样做。 $ _ FILES ['file'] ['name'] 可以是 ../../../../ boot.ini 或任何不好的东西。你永远不要相信这个名字。您应该重新命名文件,并将原始名称与您的随机名称关联起来。至少使用 basename($ _ FILES ['file'] ['name'])

0
额外

另一个想法是观察你的目录分隔符,你正在使用/在一个Windows盒子里..

0
额外

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

0
额外

Create a folder named "image" with folder permission 777

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