【问题标题】:favicon.icoController could not be found at CakePHP 2.2在 CakePHP 2.2 中找不到 favicon.icoController
【发布时间】:2013-07-24 19:30:48
【问题描述】:

我刚刚检查了cake/app/tmp里面的error.log,发现有一个与`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 {主}

我很困惑,因为我可以在我的网站上看到网站图标,它与网站的其余图片位于 webroot/img。我使用的是.png 格式。

另外,webroot 中有一个名为 favicon.ico 的默认网站图标,我相信它是 CakePHP 的。

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

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

这个问题说明了什么?

【问题讨论】:

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


    【解决方案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>Controller:

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

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

    【讨论】:

    • 该错误涉及一个名为 Favicon.icoController 的控制器,而不是任何 .ico 文件。此外,正如我所说,.ico 文件存在于webroot 文件夹中。 (默认情况下)
    • 你从哪里得到Request Url: /favicon.ico?不是我的错误。
    • 是的。你说的对。我发现我在另一层没有很好地指出它。谢谢!
    【解决方案2】:

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

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

    【讨论】:

    • 生成的html也是icon类型的:&lt;link href="/cakephp/img/favicon.png" type="image/x-icon" rel="shortcut icon"&gt;
    猜你喜欢
    • 2012-12-30
    • 1970-01-01
    • 1970-01-01
    • 2012-10-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-15
    • 1970-01-01
    相关资源
    最近更新 更多