安装FriendsOfCake/cakephp-csvview后控制器丢失异常


Missing Controller Exception after installing FriendsOfCake/cakephp-csvview

使用

安装FriendsOfCake/cakephp-csvview
php ../composer.phar require friendsofcake/cakephp-csvview:~3.0.

之后,所有页面显示缺失控制器异常(他们肯定是OK的),即使在bootstrap.php中注释掉Plugin::load('CsvView')之后。我怀疑php无法找到控制器类,但不知道为什么。我用的是find . -mtime -1, src下的文件没有变化。

有没有人能告诉我Cakephp是如何计算出类文件位置的,这样我就可以排除故障了?

下面的堆栈跟踪:

2016-10-04 03:20:39 Warning: Headers already sent in {base}/vendor/cakephp/cakephp/src/Error/Debugger.php:753
2016-10-04 03:20:39 Error: [Cake'Routing'Exception'MissingControllerException] Controller class Holders could not be found.
Exception Attributes: array (
  'class' => 'Holders',
  'plugin' => false,
  'prefix' => false,
  '_ext' => false,
)
Request URL: /
Client IP: 127.0.0.1
Stack Trace:
#0 {base}/vendor/cakephp/cakephp/src/Http/ControllerFactory.php(72): Cake'Http'ControllerFactory->missingController(Object(Cake'Network'Request))
#1 {base}/vendor/cakephp/cakephp/src/Routing/Filter/ControllerFactoryFilter.php(63): Cake'Http'ControllerFactory->create(Object(Cake'Network'Request), Object(Cake'Network'Response))
#2 {base}/vendor/cakephp/cakephp/src/Routing/Filter/ControllerFactoryFilter.php(49): Cake'Routing'Filter'ControllerFactoryFilter->_getController(Object(Cake'Network'Request), Object(Cake'Network'Response))
#3 {base}/vendor/cakephp/cakephp/src/Routing/DispatcherFilter.php(144): Cake'Routing'Filter'ControllerFactoryFilter->beforeDispatch(Object(Cake'Event'Event))
#4 {base}/vendor/cakephp/cakephp/src/Event/EventManager.php(426): Cake'Routing'DispatcherFilter->handle(Object(Cake'Event'Event), Object(Cake'Network'Request), Object(Cake'Network'Response))
#5 {base}/vendor/cakephp/cakephp/src/Event/EventManager.php(391): Cake'Event'EventManager->_callListener(Array, Object(Cake'Event'Event))
#6 {base}/vendor/cakephp/cakephp/src/Event/EventDispatcherTrait.php(78): Cake'Event'EventManager->dispatch(Object(Cake'Event'Event))
#7 {base}/vendor/cakephp/cakephp/src/Http/ActionDispatcher.php(81): Cake'Http'ActionDispatcher->dispatchEvent('Dispatcher.befo...', Array)
#8 {base}/vendor/cakephp/cakephp/src/Routing/Dispatcher.php(60): Cake'Http'ActionDispatcher->dispatch(Object(Cake'Network'Request), Object(Cake'Network'Response))
#9 {base}/webroot/index.php(37): Cake'Routing'Dispatcher->dispatch(Object(Cake'Network'Request), Object(Cake'Network'Response))
#10 {main}

如果有的话,CakePHP只尝试从较短的类中找出完全合格的类名,它不处理包括类文件或计算它们的位置,因为CakePHP 3依赖于编写器自动加载器 (vendor/autoload.php)来完成。

如果在更新依赖项之后出现问题,这也会导致自动加载器被重新转储,那么很有可能是自动加载器坏了(无论出于什么原因)。