【问题标题】:Codeigniter server rootCodeigniter 服务器根目录
【发布时间】:2013-07-20 02:44:42
【问题描述】:

我正在尝试使用 Codeigniter 在服务器中上传视频,在本地主机中我可以做到,但是在服务器中时它不起作用。即使do_upload() 函数返回 true。

当我测试服务器根目录时,print_r($_SERVER['DOCUMENT_ROOT']); 它返回

/var/www/mjpp/data/www/supps.mydomainname.com

还有 $updata = $this->upload->data();返回

[file_path] => /var/www/mjpp/data/www/supps.mydomainname.com/public/video

你能告诉我为什么/var/www/mjpp/data/出现在我的主域名之前,这是上传视频出错的原因吗?

提前谢谢你,对不起我的英语不好。

【问题讨论】:

    标签: php codeigniter video upload path


    【解决方案1】:

    /var/www/mjpp/data/www/supps.mydomainname.com 通常是您的文档根目录在系统中的绝对位置。但是,您通常无权访问用户目录之上的任何内容。

    public/video/var/www/mjpp/data/www/supps.mydomainname.com/public/video(作为绝对路径)是您作为 upload_path 传递给 Upload 库的内容。这是图书馆将尝试上传文件的地方。这个文件夹应该存在并且是可写的(例如拥有 0777 权限)。

    【讨论】:

      【解决方案2】:

      文件上传时无需使用Document Root,Codeigniter本身有配置。

      这是图片上传的示例代码,

      function do_upload()
      {
          $config['upload_path'] = './uploads/';
          $config['allowed_types'] = 'gif|jpg|png';
          $config['max_size'] = '100';
          $config['max_width']  = '1024';
          $config['max_height']  = '768';
      
          $this->load->library('upload', $config);
      
          if ( ! $this->upload->do_upload())
          {
              $error = array('error' => $this->upload->display_errors());
      
              $this->load->view('upload_form', $error);
          }
          else
          {
              $data = array('upload_data' => $this->upload->data());
      
              $this->load->view('upload_success', $data);
          }
      }
      

      您只需要更改配置($config 数组),对于您的问题,您应该使用 $config['upload_path']。

      关注codigniter文件上传tutorial

      【讨论】:

      • 谢谢,但我需要知道为什么 /var/www/mjpp/data/ 出现在我的主域名之前。你能告诉我吗?
      • 当前脚本在其下执行的文档根目录,在服务器的配置文件中定义。所以这就是他们在真实服务器中的配置方式,您没有获得专用空间,您与其他人共享空间。
      【解决方案3】:

      不要在 CI 中使用 $_SERVER['DOCUMENT_ROOT'],使用 URL Helper

      $this->load->helper('url');
      
      echo base_url();
      

      【讨论】:

      • 谢谢,我可以使用base_url() 作为base_url()images/upload/path/ 之类的文件路径吗?
      • 可以,但是要创建 $path=base_url().'images/upload/path/';
      • 感谢您的评论。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-09-02
      • 2020-08-21
      • 1970-01-01
      • 1970-01-01
      • 2011-03-04
      相关资源
      最近更新 更多