【问题标题】:Setting destination for secure file uploads php设置安全文件上传的目的地 php
【发布时间】:2013-11-24 12:23:06
【问题描述】:

我正在使用以下 php 文件上传类以相对安全的方式上传我的文件。稍后我将添加更多安全功能:

http://www.verot.net/php_class_upload.htm

我的问题是,我想将我的文件上传到我已经预先创建的文件夹 www.mysite.com/upload 以获取文件。

唯一的问题是我不知道如何正确设置它来做到这一点。我已经确认表格提交正常。这是我尝试使用的:

$handle = new class_upload($_FILES['image_upload']);
  if ($handle->uploaded) {
      $handle->file_new_name_body   = 'image_resized';
      $handle->image_resize         = true;
      $handle->image_x              = 100;
      $handle->image_ratio_y        = true;
      $handle->process('/home/user/upload');
      if ($handle->processed) {
          echo 'image resized';
          $handle->clean();
      } else {
          echo 'error : ' . $handle->error;
      }
  }

我得到错误:

“无法创建目标目录。无法进行进程。”

我要为$handle->process('/home/user/upload'); 设置什么以便它上传到正确的目录?

【问题讨论】:

    标签: php file-upload


    【解决方案1】:

    错误消息表明运行您的网络服务器的用户可能没有创建目录的权限...因此这意味着您创建的目录不是目标。

    您需要此文件夹的完整路径...获取它的一种方法是使用:

    $handle->process($_SERVER['DOCUMENT_ROOT'] . '/upload/');
    

    我会尽量避免这种情况,因为 $_SERVER 变量通常可能被篡改或不准确。

    恕我直言,更好的方法是:

    $handle->process(realpath(dirname(__FILE__) . '/upload/');
    

    并确保您创建的文件夹对网络服务器的用户/组具有可写权限。

    【讨论】:

    • 感谢您的款待!我用 echo $_SERVER['DOCUMENT_ROOT'];找出路径,然后使用硬编码将其放入。如果可以的话,我认为最好总是硬编码。对数组的篡改绝对正确。 :)
    • 完美的解决方案,如果您不在多个主机上使用该站点 - realpath 方法也可以很好地计算与您调用该函数的文件相关的根。很高兴有帮助并有一个周末愉快。你介意接受我的回答吗?
    • 你也谢谢你!我总是接受......只需要等待该死的计时器
    • @AmyNeville 无需担心“篡改数组”。他没有这么说。您唯一应该小心使用的是 $_SERVER 超全局数组,因为您不能总是信任它的值,有时它们取决于管理员配置的内容,是的,值可能会被欺骗。硬编码通常是不好的做法,你应该尽可能避免它。
    【解决方案2】:

    我怀疑,你要找的是$handle->process(dirname(__FILE__).'/home');,假设调用脚本直接在网络根文件夹中。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-04-14
      • 2013-10-18
      • 2011-04-27
      • 2011-06-24
      • 1970-01-01
      • 2012-12-25
      • 1970-01-01
      • 2013-02-14
      相关资源
      最近更新 更多