在CakePHP 2.2上找不到favicon.icoController

时间:2013-07-24 09:30:48

标签: cakephp cakephp-2.0 cakephp-2.1 cakephp-2.3

我刚检查了error.log内的cake/app/tmp,发现有一个与`fa

相关的错误
  

2013-07-24 10:12:00错误:[MissingControllerException]找不到控制器类Favicon.icoController。

     

#0 C:\ inetpub \ wwwroot \ app \ webroot \ index.php(92):Dispatcher-> dispatch(Object(CakeRequest),Object(CakeResponse))

     

#1 C:\ inetpub \ wwwroot \ index.php(42):require('C:\ inetpub \ wwwr ...')

     

#2 {main}

我很困惑,因为我能够在我的网站上看到favicon,它位于webroot/img与该网站的其他图像。我使用的是.png格式。

此外,webroot中有一个名为favicon.ico的默认图标,我认为它是CakePHP版。

这是我在布局标题中加载自己的图标的方式:

echo $this->Html->meta('icon', $this->Html->url('/img/favicon.png'));

这个问题指出了什么?

2 个答案:

答案 0 :(得分:1)

favicon.ico不存在

默认情况下,CakePHP中有以下路径:

/:controller

如果对不存在的文件发出请求,它将表现为缺少控制器错误。例如,请求存在“正常工作”的文件:

$ pwd
/var/www/2.x/app/webroot
$ls
css  favicon.ico  files  img  index.php  js  test.php
$ curl -I http://cakephp.2.dev/favicon.ico
HTTP/1.1 200 OK
Date: Wed, 24 Jul 2013 11:25:07 GMT
Server: Apache/2.2.22 (Ubuntu)
Last-Modified: Wed, 24 Jul 2013 11:25:07 GMT
ETag: W/"1c7-174-4e2402c11f000"
Accept-Ranges: bytes
Content-Length: 372
Content-Type: image/x-icon

删除文件会产生404:

$ rm favicon.ico
$ curl -I http://cakephp.2.dev/favicon.ico
HTTP/1.1 404 Not Found
Date: Wed, 24 Jul 2013 11:26:52 GMT
Server: Apache/2.2.22 (Ubuntu)
X-Powered-By: PHP/5.4.17RC1
Set-Cookie: CAKEPHP=0h68rnghqaku6d8eo30od1ga06; expires=Wed, 24-Jul-2013 15:26:53 GMT; path=/
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
Content-Length: 2861
Vary: Accept-Encoding
Content-Type: text/html; charset=UTF-8

为了预期,但不仅如此,生成的错误消息是针对缺少的<file>控制器:

$ curl -i http://cakephp.2.dev/favicon.ico
...
<em>Favicon.icoController</em> could not be found.</p>

因此 - 要在问题中获取错误消息 - 文件存在(或由于文件权限而无法读取)。

答案 1 :(得分:0)

尝试不使用Html :: url并添加类型:

$this->Html->meta('icon', '/img/favicon.png', array('type' => icon');