PHP错误 - 上传文件

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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;
    }
?>

<!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权限。

有任何想法吗?

答案

因为它是Windows,没有真正的777.如果你正在使用chmod,请检查与Windows相关的评论。

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

E:inetpubvhostsmywebsite.comhttpdocsdump
C:WINDOWSTemp
另一答案

我的天啊

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

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

另一答案

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

<?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;
}
?>
另一答案

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

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

检查运行应用程序的进程(通常是php的webservers进程)有权在那里写一个文件。

编辑:

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

另一答案

另一个值得观察的是您的目录分隔符,您正在Windows框中使用/ ..

另一答案

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

另一答案

使用文件夹权限777创建名为“image”的文件夹

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

以上是关于PHP错误 - 上传文件的主要内容,如果未能解决你的问题,请参考以下文章

php文件上传错误代码

php上传文件错误怎么解决

PHP中上传文件打印错误,错误类型

关于PHP上传文件时配置 php.ini 中的 upload_tmp_dir

PHP上传文件显示403服务器错误

java Ftp上传创建多层文件的代码片段