/ app / webroot / file /中的MissingControllerException目录

时间:2013-05-08 12:01:29

标签: cakephp cakephp-2.3

我在error.log中收到这些消息:

Request URL: /files/thumbs1/1354046882.jpg
Stack Trace:
#0 /path/to/web/app/webroot/index.php(92):     Dispatcher->dispatch(Object(CakeRequest), Object(CakeResponse))
#1 {main}
2013-05-08 13:44:16 Error: [MissingControllerException] Controller class     FilesController could not be found.
Exception Attributes: array (
  'class' => 'FilesController',
  'plugin' => NULL,
)

图像文件/files/thumbs1/1354046882.jpg存在并显示。但除此之外,我在error.log中得到错误。 我在视图.ctp中手动生成url如下:

<img src="/files/thumbs1/1354046882.jpg" alt="">

我不用     echo $ this-&gt; Html-&gt; image('cake_logo.png',array('alt'=&gt;'CakePHP'));

如何添加ControllerException,以便webroot中的目录“files”不会被识别为控制器。我没有FilesController。 或者是否可能,“file”是CakePHP中受保护的单词,不应该使用?到目前为止,在CakeBook中找不到相关内容。

/ webroot中的.htaccess

<IfModule mod_rewrite.c>
   RewriteCond %{HTTP_HOST} !www.domainname.com
   RewriteRule (.*)  http://www.domainname.com/$1 [R=301,L]
   RewriteCond %{REQUEST_FILENAME} !-d
   RewriteCond %{REQUEST_FILENAME} !-f
   RewriteRule ^(.*)$ index.php [QSA,L]
</IfModule>

我更新到CakePHP 2.3。 谢谢你的帮助。

2 个答案:

答案 0 :(得分:0)

在.htaccess中添加规则,以便以/ files /开头的请求网址不会路由到index.php。

在旁注上尽量不要为丢失的文件生成URL:)

答案 1 :(得分:0)

如果我理解了一切,那么你唯一的问题就是没有写出正确的网址。

我将在这里假设一些事情:你的文件夹的结构类似于

/app
    /Config
    /Console
    ...
    /webroot
        /files
/lib
/plugins
/vendors

你想要的是显示位于这个文件目录中的图像,对吗?

然后你需要确保get your paths right。如果你没有告诉蛋糕你想要webroot中的文件,那么使用这种类型的URL

files/something/something-else

蛋糕只是想“好吧,这条路径是控制器/动作/参数(这是一个概括,显然这个假设可以用routing修改”),并且失败因为文件不是控制器。

因此,要解决此问题,每次要指向webroot目录中的某些内容时,请将其添加到路径中。在你的情况下它应该是

<img src="<?php echo $this->webroot; ?>files/thumbs1/1354046882.jpg" alt="">

如果文件存在,则应该显示没有错误。