【发布时间】:2014-07-26 08:09:40
【问题描述】:
升级 php 版本后,现在它在我的基于 CakePHP 的网站上显示以下错误消息。
Error: [MissingControllerException] Controller class Gems.pngController could not be found.
#0 /home/example/public_html/dev/app/webroot/index.php(111):
Dispatcher->dispatch(Object(CakeRequest), Object(CakeResponse))
#1 {main} - http://www.example.com/gems.png
我在 .htaccess 中使用以下代码(在 webroot 中)
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP_HOST} ^example.com [NC]
RewriteRule ^(.*)$ http://www.example.com/$1 [L,R=301]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php [QSA,L]
</IfModule>
此外,它会在网页上显示警告消息。 "严格 (2048): FileComponent::startup() 的声明应该与 Component::startup(Controller $controller) [APP/Controller/Component/FileComponent.php, line 0] 兼容"
我真的很难找到所有问题的解决方案。
提前谢谢
【问题讨论】:
-
我想
gems.png存在,不是吗?如果重命名.htaccess文件,它会正确加载吗? -
是的,如果我去example.com/gems.png,那么我可以看到图像。
-
我无法复制。并且 PHP 版本在这里不应该是相关的,因为重写规则的重点是完全避免为资产调用 PHP。奇怪...
-
看到这个错误我也觉得很奇怪,因为除了php版本升级没有任何变化。
-
至于警告,使用 php 5.4,在 cakephp 中,当你有功能时,例如beforeSave() 或在您的组件中启动时,您也应该放置函数的参数。所以在你的 FileComponent 组件中将启动函数更改为
startup(Controller $controller)。在 beforeSave 的情况下,它应该是beforeSave($options = array())