I’m trying to set up a modular Zend Framework project with frontend and backend modules, but I just can’t get it working. When I visit my public directory in a web browser, I get this error message:
Fatal error: Uncaught exception ‘Zend_Controller_Dispatcher_Exception’
with message ‘Invalid controller specified (error)’ in
/usr/share/ZendFrameworkCli/library/Zend/Controller/Dispatcher/Standard.php:248
Stack trace: #0
/usr/share/ZendFrameworkCli/library/Zend/Controller/Front.php(954):
Zend_Controller_Dispatcher_Standard->dispatch(Object(Zend_Controller_Request_Http),
Object(Zend_Controller_Response_Http)) #1
/usr/share/ZendFrameworkCli/library/Zend/Application/Bootstrap/Bootstrap.php(97):
Zend_Controller_Front->dispatch() #2
/usr/share/ZendFrameworkCli/library/Zend/Application.php(366):
Zend_Application_Bootstrap_Bootstrap->run() #3
/Users/Martin/Dropbox/Repositories/realestatecms/public/index.php(25):
Zend_Application->run() #4 {main} Next exception
‘Zend_Controller_Exception’ with message ‘Invalid controller specified
(error)#0
/usr/share/ZendFrameworkCli/library/Zend/Controller/Front.php(954):
Zend_Controller_Dispatcher_Standard->dispatch(Object(Zend_Controller_Request_Http),
Object(Zend_Controller_Response_Http)) in
/usr/share/ZendFrameworkCli/library/Zend/Controller/Plugin/Broker.php
on line 336
I have created the two modules using the Zend Framework command line tool, and those two module directories have Bootstrap.php with two classes in called Frontend_Bootstrap and Backend_Bootstrap respectively.
My application.ini file looks as follows:
[production]
phpSettings.display_startup_errors = 0
phpSettings.display_errors = 0
includePaths.library = APPLICATION_PATH "/../library"
bootstrap.path = APPLICATION_PATH "/Bootstrap.php"
bootstrap.class = "Bootstrap"
appnamespace = "Application"
resources.frontController.controllerDirectory = APPLICATION_PATH "/frontend/controllers"
resources.frontController.moduleDirectory = APPLICATION_PATH "/modules"
resources.frontController.params.displayExceptions = 0
resources.layout.layoutPath = APPLICATION_PATH "/layouts/scripts/"
...
What have I done wrong? How do I get my Frontend_IndexController() to run when I visit http://example.com/public in my browser?
EDIT: If I update my configuration file with the lines as per Ivan’s answer, I now get this error message:
Fatal error: Uncaught exception ‘Zend_Application_Resource_Exception’
with message ‘Bootstrap file found for module “default” but bootstrap
class “Default_Bootstrap” not found’ in
/usr/share/ZendFrameworkCli/library/Zend/Application/Resource/Modules.php:83
Stack trace: #0
/usr/share/ZendFrameworkCli/library/Zend/Application/Bootstrap/BootstrapAbstract.php(683):
Zend_Application_Resource_Modules->init() #1
/usr/share/ZendFrameworkCli/library/Zend/Application/Bootstrap/BootstrapAbstract.php(626):
Zend_Application_Bootstrap_BootstrapAbstract->_executeResource(‘modules’)2 /usr/share/ZendFrameworkCli/library/Zend/Application/Bootstrap/BootstrapAbstract.php(586):
Zend_Application_Bootstrap_BootstrapAbstract->_bootstrap(NULL) #3
/usr/share/ZendFrameworkCli/library/Zend/Application.php(355):
Zend_Application_Bootstrap_BootstrapAbstract->bootstrap(NULL) #4
/Users/Martin/Dropbox/Repositories/realestatecms/public/index.php(25):
Zend_Application->bootstrap() #5 {main} thrown in
/usr/share/ZendFrameworkCli/library/Zend/Application/Resource/Modules.php
on line 83
Where is it getting Default_Bootstrap from as a class name?!
I had the same problem and I found the solution on this page:
http://updel.com/zend-framework-modular-application/
You have to comment the following line in /MyApp/application/configs/application.ini:
like this:
It fixed the problem, unfortunately I am not skilled enough to explain/understand why, sorry. 🙂
I hope it helps though.