PHP move_uploaded_file()在主机上失败

时间:2013-04-30 19:38:15

标签: php file-upload

我有一个脚本通过php的move_uploaded_file()上传一些文件。

在我的localhost上测试它运行正常。尝试在主机上执行相同操作时会出现问题。我已经在这里重新讨论了所有主题 - 但是没有一个能解决我的问题。

CODE:

<?php
$folder = 'img';
if (isset($_FILES['test'])) {
    if (is_writable($folder))
        echo 'Writable';
    else
        echo 'IMG is not writable';

    $tmp_name = $_FILES['test']['tmp_name'];
    $name = $_FILES['test']['name'];
    if (move_uploaded_file($tmp_name, $folder . '/' . $name)) {
        echo 'File was uploaded';
    }
    else {
        echo 'File was not uploaded';
    }
}
else {
    echo 'No file - no operation';
}
?>

<html>
<body>
    <form action="" enctype="multipart/form-data" method="POST">
        <input type="file" name="test" />
        <input type="submit" value="Test" />
    </form>
</body>
</html>

MESSAGE如下:

可写 警告:move_uploaded_file()[function.move-uploaded-file]:无法在F:\ hshome \ ctc-ultralife \ ultralife中将'C:\ WINDOWS \ Temp \ php9E75.tmp'移动到'img / 20130113_114901.jpg'。第11行的com \ new \ admin \ index_files \ function \ test2.php 文件未上传

文件夹似乎可写。即使文件未上传,也会在文件夹中创建指定名称(即使它是空文件)。

我不知道服务器的绝对路径 - 它不是我的。

非常感谢您的帮助。 提前谢谢。

2 个答案:

答案 0 :(得分:1)

我认为你必须提供move_uploaded_file函数的绝对路径。

编辑:

如果您不知道绝对路径,可以使用__DIR__常量来构成绝对路径。

假设您在img文件夹中有function文件夹,您可以这样写:

$fullPath = __DIR__ . '/img/' . $name;
if (move_uploaded_file($tmp_name, $fullPath)) {
    echo 'File was uploaded';
} else { // ... }

为了理解真正的问题,你需要查看错误日志。

答案 1 :(得分:1)

警告:在黑暗中完成刺伤。我不知道是否是这种情况,因为我不在Windows服务器上工作。

/可能需要\。我不认为Windows处理斜杠是另一种方式。这可以解释为什么它可以找到你的目录,但不能找到它里面的文件。