PHP move_uploaded_file / copy问题

时间:2010-10-09 15:00:05

标签: php file-upload

有趣的问题我似乎遇到过。我有一个表单,上传图像并将值存储在数据库表中。表单上传图像文件确定并使其可用于处理。问题如下;使用move_uploaded_file到指定的目录不起作用,但是使用copy()到此目录。

目前的代码如下:

$file = $_FILES['doc_path'];

  $ext = array_pop(explode('.', $file['name']));
  $filename = uniqid() . '.' . $ext;

  if ($file['error'] == UPLOAD_ERR_NO_FILE && ! strlen($this->filename)) {
   throw new Exception('Please select a file to upload');
  } elseif ($file['error'] == UPLOAD_ERR_NO_FILE) {
   return true; // already have a file
  } elseif ($file['error']) {
   throw new Exception('File upload error');
  } elseif (! $file['size']) {
   throw new Exception('File is of zero length');
  } else {

   $path = 'uploads/' . $filename;


   if (! move_uploaded_file($file['tmp_name'], $path)) {
    throw new Exception('Could not upload file');
   }

   return $filename;
  }

我检查过目标目录是否存在,目录是否可写。使用move_uploaded_file()不会产生错误,只会捕获“无法上传文件”异常。

如果这是一个权限问题,那么用move_uploaded_file代替copy会不会有效?

2 个答案:

答案 0 :(得分:0)

  

使用move_uploaded_file()不会产生错误,只会捕获“无法上传文件”异常。

这可能是因为您的错误报告设置。

error_reporting(E_ALL);echo error_get_last();显示什么?

答案 1 :(得分:0)

@simnon -

我认为这可能是一个路径问题。在您的来源或目标中。

尝试更改:

$path = 'uploads/' . $filename;

要:

$path = '/uploads/' . $filename;