【问题标题】:File Upload (works locally, but not on remote server)文件上传(在本地工作,但不在远程服务器上)
【发布时间】:2013-04-23 09:14:43
【问题描述】:

我正在尝试通过 HTML 表单将文件 (msword/doc) 上传到 Apache 服务器文件夹。当我在本地测试它时它可以工作(我正在通过 MAMP 测试它),但是当我将它上传到远程服务器(例如 GoDaddy)时,它就不起作用了。它显示“文件上传有问题”。

下面是处理文件上传的sn-p代码。我不知道我的条件有什么问题。

      // Move the file to the target upload folder
      $target = FILE_UPLOADPATH . basename($new_file);
      if (move_uploaded_file($_FILES['new_file']['tmp_name'], $target)) 
      {
        // The new file move was successful, now make sure any old file is deleted
        if (!empty($old_file) && ($old_file != $new_file)) 
        {
          @unlink(FILE_UPLOADPATH . $old_file);
        }
      }
      else 
      {
        // The new file move failed, so delete the temporary file and set the error flag
        @unlink($_FILES['new_file']['tmp_name']);
        echo 'There was a problem with the file upload.' . PHP_EOL;
      }

【问题讨论】:

  • 你能分享完整的 $_FILES 数组吗,因为错误参数中的值可能有助于阐明这一点
  • 这里是 $_FILES 数组输出: Array ( [new_file] => Array ( [name] => sample.doc [type] => msword/doc [tmp_name] => /tmp/phpsTu20P [错误] => 0 [大小] => 119674 )) 想法?
  • error参数中的值为0。
  • 嗯,错误0表示成功。
  • 现在注释掉您的@unlink 调用,以确保唯一测试的是您的上传和发布结果。新上传的文件是否还没有出现在目录中

标签: php apache file upload


【解决方案1】:

如果$_FILES['new_file']['error'] == 0 则上传不是问题,但调用move_uploaded_file() 是问题。您可能在尝试将文件移动到的目录上拥有不正确的权限。

【讨论】:

    【解决方案2】:

    您确定要上传的文件夹具有写入文件的权限吗?如果没有,请使用 chmod 0777 并进行测试。

    【讨论】:

    • 是的,它有 chmod 775 权限。
    【解决方案3】:

    您的目标文件夹是否具有适当的权限? http://en.wikipedia.org/wiki/Chmod 写入的目录通常需要 775:What are the proper permissions for an upload folder with PHP/Apache?

    另外,您是否希望用户可以直接访问该文件?如果不是,您应该考虑将文件写入 Web 根目录上方的文件夹。

    【讨论】:

    • 我仔细检查了权限。它们是 775。是的,我确实希望用户能够直接访问该文件。我认为问题可能出在“move_uploaded_file”行。数据库将文件名存储在表中,并在上传后显示在表单上。但是当我检查上传文件夹时,文件不存在。
    【解决方案4】:

    对我来说,我碰巧在本地使​​用 php 的upload_max_filesize 下的文件进行测试,而在远程使用超过upload_max_filesize 的文件进行测试。请参阅https://stackoverflow.com/a/30359278/3325776 了解更多信息。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-11-30
      • 2021-09-15
      • 2015-06-19
      • 2016-09-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多