我刚检查了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'));
这个问题指出了什么?
答案 0 :(得分:1)
默认情况下,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');