PHP上传文件未保存到上传文件夹中

4

现在我遇到了另一个问题,就是上传的文件没有保存到我设置好的上传文件夹中。

以下问题已解决

我一直在使用这个简单的HTML和PHP代码将文件上传到Web服务器,但每次尝试将文件上传到服务器时都会出现此错误。文件未上传到服务器。

我正在使用Windows 7,IIS 7.5,PHP 5.6.2

我已经为上传文件(uploads)创建了文件夹,并已向所有Web服务器文件夹授予了IIS用户的完全控制权限。

我先在网上搜索了一下,但没有发现任何类似于我的问题。

这里是详细的错误信息:

HTTP错误404.0-未找到 您要查找的资源已被删除、更改名称或暂时不可用。

这是我的HTML脚本

<!DOCTYPE html>    
    <body>
        <form action="upload.php" 
              method="post" 
              enctype="multipart/form-data">
            <label for="file">
                Filename:
            </label>
            <input type="file" 
                   name="file" 
                   id="file"><br />
            <input type="submit" 
                   value="submit">
        </form>
    </body>
</html>

这是我的PHP脚本:

<?php
    $my_folder = "uploads/";
    copy($_FILES["file"]["tmp_name"],$my_folder.$_FILES["file"]["name"]);
    echo "File uploaded.";
?>

IIS会对任何尝试访问其无法识别的文件扩展名抛出404错误,即使该文件存在。您可能没有在服务器上正确配置PHP。 - Havenard
刚刚修复了404错误,但现在我遇到了上传的文件没有存储在我设置的文件夹中。 - koreanfob
请提供您项目的目录结构和浏览器控制台关于网络活动的快照。同时,请指明您项目的HTTP根目录所在位置。 - user3303864
请使用move_uploaded_file函数而不是复制,具体请参考http://php.net/manual/pt_BR/function.move-uploaded-file.php。 - user3303864
我切换到了move_uploaded_file函数,现在出现了HTTP 500内部服务器错误... :( - koreanfob
2个回答

4
<?php

$my_folder = "./uploads/";

if (move_uploaded_file($_FILES['file']['tmp_name'], $my_folder . $_FILES['file']['name'])) {
    echo 'Received file' . $_FILES['file']['name'] . ' with size ' . $_FILES['file']['size'];
} else {
    echo 'Upload failed!';

    var_dump($_FILES['file']['error']);
}

检查目标文件夹的读写权限。
PHP手册:

它仍然无法工作... 我已经给了每个人完全控制权限,但它仍然无法工作。 - koreanfob
它会输出 "上传失败!" - koreanfob
上传失败!在浏览器上显示 int(6)。 - koreanfob
"UPLOAD_ERR_NO_TMP_DIR" 缺少临时目录 - http://php.net/manual/de/features.file-upload.errors.php 您是否已在php.ini的文件上传部分正确配置了临时路径:设置“upload_tmp_dir”指令? - Jens A. Koch
IIS是否配置为写入该文件夹?IIS帐户需要访问权限(读取、写入、修改权限)。您可以尝试使用“C:\WINDOWS\Temp\”。临时文件夹和目标文件夹都需要正确的权限。 - Jens A. Koch
显示剩余5条评论

3

我曾经遇到同样的问题,试了两个小时的各种方法,最终发现文件夹的读写权限是关键。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接