为什么move_uploaded_file不起作用?

时间:2011-10-09 05:47:05

标签: php file-upload file-io

每当我尝试移动文件时它都不起作用并显示“图像文件未上传”...我只是想知道错误的位置......

$target = '/var/www/student/public/myimage.jpg';
$destination = '/var/www/student/public/images/myimage.jpg';

if( move_uploaded_file( $target, $destination ) ) {
    echo "Image file is successfully loaded";                           
} else {

   echo "Image file not uploaded.";
}
  • 我检查了错误日志(tail -f /var/log/apache2/error.log),但一无所获。
  • 目标和目标两个目录都具有 777 权限。

有人能告诉我如何找出错误。有什么想法吗?

3 个答案:

答案 0 :(得分:3)

如果您不使用HTTP POST上传方法,则可以使用rename()

rename($target, $destination);

答案 1 :(得分:2)

文件是否已在当前请求中上传?

move_uploaded_file将拒绝移动未上传的文件。 (即$target必须等于$_FILES[$field_name]['tmp_name']

如果先前已经上传,move_uploaded_file将拒绝工作(如果它仍然存在 - 如果我没记错,如果你没有处理该上传文件,PHP会删除它)

如果实际上已使用此请求上传的文件,则您需要使用rename

答案 2 :(得分:0)

move_uploaded_file()仅适用于http post文件。 http://php.net/manual/en/function.move-uploaded-file.php

要移动服务器上已有的文件,您必须复制该文件并取消链接旧文件

$target = '/var/www/student/public/myimage.jpg';
$destination = '/var/www/student/public/images/myimage.jpg';
if (copy($target, $destination)) {
   unlink($target);
} else {
   echo "Unable to copy $target to $destination.";
}