PHP move_uploaded_file()问题

时间:2011-09-22 17:10:49

标签: php linux

我有PHP脚本(testupload.php):

<?php

    error_reporting(E_ALL);
    ini_set('log_errors',1);
    ini_set('error_log','/root/work/inputs/log_file');

    $target_path = "/work/inputs";

    $target_path = $target_path . basename( $_FILES['frag3']['name']);
    echo "Received File: " . $_FILES['frag3']['name'] . " and moving it to " .  $target_path . "<br>";

    if(move_uploaded_file($_FILES['frag3']['name'], $target_path)) {
        echo "The file ".  basename( $_FILES['frag3']['name']) . " has been uploaded";
    } else{
        echo "There was an error uploading the file, please try again!";
    }
?>

要调用它的HTML文件:

<html xmlns="http://www.w3.org/1999/xhtml">
        <body>
            <form action = "http://localhost:8081/testupload.php" method="post" enctype="multipart/form-data">
                <span>Value : </span><input type="text" name="Value" value="Hello world"/><br />
                <span>Fragment File : </span><input type="file" name="frag3" /><br /> 
                <input type="submit" value="Send"/>
            </form>
        </body>
</html>

然而,我不断收到回应: 的 There was an error uploading the file, please try again!

很明显move_uploaded_file()没有正常运作。另外,它实际上并没有移动文件。但是,我似乎无法诊断出这个问题。

我的第一个想法是该目录不可写。但我对该文件夹的权限为drwxrwxrwx(由ls -l确定)

另外,该行: 函数ini_set( '的error_log', '/根/工作/输入/ LOG_FILE');

似乎没有将日志文件写入该位置。

有没有人有这方面的经验?我该如何诊断这里发生的事情?

我在这里几乎不知所措,所以任何帮助都会非常感激。

我使用的是OpenSUSE 11.2,Apache 2.2和PHP 5.3。

非常感谢, 布雷特

4 个答案:

答案 0 :(得分:3)

你应该move_uploaded_file($_FILES['frag3']['tmp_name'], $target_path)

答案 1 :(得分:0)

以下是要检查的内容:

如果这些都没有帮助,请启用错误报告并发布您收到的内容,以便我们根据您的情况更好地定制答案。

答案 2 :(得分:0)

php将文件存储在临时名称的服务器中 你可以通过

获得

$_FILES['frag3']['tmp_name']而不是$_FILES['frag3']['name']

答案 3 :(得分:0)

我相信它是move_uploaded_file($_FILES['frag3']['tmp_name'], $target_path),因为文件实际上并没有按照它们上传的名称存储(当然,你可以通过设置它们的目标路径来重命名它们)。