我有一个脚本通过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 文件未上传
文件夹似乎可写。即使文件未上传,也会在文件夹中创建指定名称(即使它是空文件)。
我不知道服务器的绝对路径 - 它不是我的。
非常感谢您的帮助。 提前谢谢。
答案 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处理斜杠是另一种方式。这可以解释为什么它可以找到你的目录,但不能找到它里面的文件。