Php 编码点火器图像输出don';不能在不同的控制器中工作

Php 编码点火器图像输出don';不能在不同的控制器中工作,php,codeigniter,Php,Codeigniter,我有2个控制器(CodeIgniter) IndexController是MY_控制器的一个子类 adminController是MY_Admin_Controller的子类(MY_Admin Controller是MY_Controller的子类) 在控制器(索引和管理)中,我都有一个函数。这: function thumb() { $product = $this->products->get_product_by_id($this->uri->segme

我有2个控制器(CodeIgniter)

  • IndexController是MY_控制器的一个子类
  • adminController是MY_Admin_Controller的子类(MY_Admin Controller是MY_Controller的子类)
在控制器(索引和管理)中,我都有一个函数。这:

function thumb() {
    $product = $this->products->get_product_by_id($this->uri->segment(2));

    if($product == NULL) show_error("No Access", 403);

    $delimeter = "";
    if(stripos($product->thumbpath, "/") !== false) {
        $delimeter = "/";
    } else {
        $delimeter = "\"";
    }
    $arr = explode($delimeter, $product->thumbpath);

    $path = "uploads/".$this->uri->segment(2)."/".$arr[count($arr)-1];

    $this->load->image($path, get_mime_by_extension($path));

}
如果我从adminController执行此函数,它会执行。 但是如果我从indexController执行这个函数-它不会

这在my routes.php中:

$route['thumb/:any'] = "index/thumb";
  • 从管理员控制器我得到一个工作图像
  • 从indexController我得到一个损坏的图像
实际上没有限制(会话、文件权限…)


有人知道我能做什么吗?

我猜当你在索引控制器中时,$path是错误的。试试这个:

$path = base_url()."uploads/".$this->uri->segment(2)."/".$arr[count($arr)-1];

老实说,当我使用base_url而不是相对路径将CI中的大多数链接设置为绝对路径时,我发现CI中的大多数链接更容易处理,而且从我的理解来看,绝对路径更适合SEO,尽管我无法证明这一点。

图像函数使用相对路径。我用另一种方法解决了这个问题。我将函数粘贴在一个单独的控制器(而不是indexController)中,就像一个thumbController一样。我不知道为什么这样行而另一个不行。。。。
$path = base_url()."uploads/".$this->uri->segment(2)."/".$arr[count($arr)-1];