微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

php – Zend Framework – “指定的控制器无效”

我在实时服务器上设置Zend Framework应用程序时遇到问题.它可以在localhost上正常工作.

我有应用程序的实时服务器地址是:

http://www.domainname.com/new/

一切正常,直到我尝试访问URL http://www.domainname.com/new/admin的管理模块,然后我收到以下错误.

有任何想法吗?

An error occurred
Page not found
Exception information:

Message: Invalid controller specified (index)
Stack trace:

#0 /data/www/www.domainname.com/public_html/new/library/Zend/Controller/Front.PHP(954): Zend_Controller_dispatcher_Standard->dispatch(Object(Zend_Controller_Request_Http),Object(Zend_Controller_Response_Http))
#1 /data/www/www.domainname.com/public_html/new/library/Zend/Application/Bootstrap/Bootstrap.PHP(97): Zend_Controller_Front->dispatch()
#2 /data/www/www.domainname.com/public_html/new/library/Zend/Application.PHP(366): Zend_Application_Bootstrap_Bootstrap->run()
#3 /data/www/www.domainname.com/public_html/new/index.PHP(27): Zend_Application->run()
#4 {main}  

Request Parameters:

array (
  'module' => 'admin','controller' => 'index','action' => 'index',)

index.PHP中的包含路径设置正确(库和其他所有内容都已加载),index.PHP文件在这里

// Define path to application directory
defined('APPLICATION_PATH')
    || define('APPLICATION_PATH',realpath(dirname(__FILE__) . '/application'));

// Define application environment
defined('APPLICATION_ENV')
    || define('APPLICATION_ENV',(getenv('APPLICATION_ENV') ? getenv('APPLICATION_ENV') : 'production'));

set_include_path('library');

// Define upload path
if (!defined('UPLOAD_PATH'))
        define('UPLOAD_PATH',realpath(dirname(__FILE__)) . '/upload/');

/** Zend_Application */
require_once 'Zend/Application.PHP';

// Create application,bootstrap,and run
$application = new Zend_Application(
    APPLICATION_ENV,APPLICATION_PATH . '/configs/application.ini'
);

$application->bootstrap()
            ->run();

Bootstrap.PHP文件

class Bootstrap extends Zend_Application_Bootstrap_Bootstrap
{
    protected function _initDoctype(){
        $this->bootstrap('view');
        $view = $this->getResource('view');
        $view->doctype('XHTML1_STRICT');
    }

    protected function _initTimeZone(){
        $date = $this->getoption('date');
        date_default_timezone_set($date['timezone']);
    }

    protected function _initLayoutHelper(){
        $this->bootstrap('frontController');
        Zend_Controller_Action_Helperbroker::addHelper(
            new Jakub_Controller_Action_Helper_LayoutLoader());
    }

    protected function _initFlashMessenger(){
        $flashMessenger = Zend_Controller_Action_Helperbroker::getStaticHelper('FlashMessenger');

        if ($flashMessenger->hasMessages()) {
            $view = $this->getResource('view');
            $view->messages = $flashMessenger->getMessages();
        }
    }

    protected function _initAuth(){
        $this->bootstrap('session');
        $auth = Zend_Auth::getInstance();
        if ($auth->hasIdentity()) {
            $view = $this->getResource('view');
            $view->user = $auth->getIdentity();
        }

        return $auth;
    }
}

Application.ini文件

[production]
webhost = "http://www.domainname.com/new"

PHPSettings.display_startup_errors = 1
PHPSettings.display_errors = 1
resources.frontController.params.displayExceptions = 1

includePaths.library = APPLICATION_PATH "/../library"

date.timezone = "Europe/Bratislava"

bootstrap.path = APPLICATION_PATH "/Bootstrap.PHP"
bootstrap.class = "Bootstrap"

appnamespace = "Application"
autoloadernamespaces.nette = "Nette_"
autoloadernamespaces.jakub = "Jakub_"

resources.frontController.controllerDirectory = APPLICATION_PATH "/controllers"
resources.frontController.moduleDirectory = APPLICATION_PATH "/modules"

resources.view[] =
resources.view.helperPath.App_View_Helper = APPLICATION_PATH "/views/helpers"

resources.modules[] =

resources.layout.layoutPath = APPLICATION_PATH "/layouts/scripts/default/"
resources.layout.layout = default

admin.resources.layout.layoutPath = APPLICATION_PATH "/modules/admin/layouts/scripts/base/"
admin.resources.layout.layout = default

[staging : production]

[testing : production]
PHPSettings.display_startup_errors = 1
PHPSettings.display_errors = 1

[development : production]
webhost = "http://domainname"

PHPSettings.display_startup_errors = 1
PHPSettings.display_errors = 1
resources.frontController.params.displayExceptions = 1
在您的管理模块文件夹中,检查IndexController.PHP是否存在于“controllers”子目录中.

如果是,则打开IndexController.PHP并确保类声明确实声明了类“IndexController”(一个常见的复制粘贴陷阱)

编辑:控制器名称应为Admin_IndexController,而不仅仅是IndexController

原文地址:https://www.jb51.cc/php/134205.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐