Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 09-09-2008 16:46:42

nicolas2b
Nouveau membre
Date d'inscription: 21-04-2008
Messages: 9

[RESOLU]Invalid controller specified

Bonjour,

Je rencontre un problème de controller.
J'ai developpé sur mon ordi (en local, donc) et cela fonctionne. J'ai donc voulu le mettre en ligne, et là c'est le drame : il ne trouve pas mon controlleur.

Voici le bootstrap :

Code:

<?

error_reporting(E_ALL|E_STRICT);

date_default_timezone_set('Europe/Paris');
ini_set('include_path', '.'
    . PATH_SEPARATOR . '../application/lib/'
    . PATH_SEPARATOR . '../application/modules/XXX/models/'
    . PATH_SEPARATOR . '../application/modules/admin/models/'
    . PATH_SEPARATOR . ini_get('include_path') );

include "Zend/Loader.php";
Zend_Loader::loadClass('Zend_Db_Table_Abstract');
Zend_Loader::loadClass('Zend_Registry');
Zend_Loader::loadClass('Zend_Log');
Zend_Loader::loadClass('Zend_Log_Writer_Stream');

$writer = new Zend_Log_Writer_Stream('../application/log/fichier_log.log');
$logger = new Zend_Log($writer);
//Zend_Log::registerLogger(new Zend_Log_Writer_Stream('../application/log/fichier_log.log'));
//Zend_Log::setMessagePrefix('['. date('Y-m-d G:i') . '] ' . $_SERVER['REMOTE_ADDR'] . ': ');
Zend_Registry::set('logger',$logger);

Zend_Loader::loadClass('Zend_Auth');
Zend_Loader::loadClass('Zend_Cache');
Zend_Loader::loadClass('Zend_Config_Ini');
Zend_Loader::loadClass('Zend_Controller_Front');
Zend_Loader::loadClass('Zend_Controller_Router_Rewrite');
Zend_Loader::loadClass('Zend_Controller_Router_Route');
Zend_Loader::loadClass('Zend_Controller_Router_Route_Regex');
Zend_Loader::loadClass('Zend_Controller_Router_Route_Module');
Zend_Loader::loadClass('Zend_Controller_Router_Route_Static');
Zend_Loader::loadClass('Zend_Db');
Zend_Loader::loadClass('Zend_Db_Table_Row_Abstract');
Zend_Loader::loadClass('Zend_Debug');
Zend_Loader::loadClass('Zend_View');

Zend_Loader::loadClass('Document');
Zend_Loader::loadClass('Documents');
Zend_Loader::loadClass('DocumentsEvenements');
Zend_Loader::loadClass('Evenement');
Zend_Loader::loadClass('Evenements');
Zend_Loader::loadClass('Groupe');
Zend_Loader::loadClass('Groupes');
Zend_Loader::loadClass('Membre');
Zend_Loader::loadClass('Membres');
Zend_Loader::loadClass('MembresEvenements');
Zend_Loader::loadClass('MembresGroupes');

$logger->log("Chargement de la configuration", Zend_Log::DEBUG);
$config = new Zend_Config_Ini('../application/config/config.ini', 'production');


define('ROOT_URL', 'http://1.2.3.4/~uniapaco/');
$front = Zend_Controller_Front::getInstance();

//INITIALISAION DU CACHE
//A METTRE EN PRODUCTION
$logger->log("Debut creation du cache", Zend_Log::DEBUG);
$cache_bdd = Zend_Cache::factory('Core', 'File', array('lifetime'=>7200), array('cache_dir' => '../application/var/cache/'));
Zend_Db_Table_Abstract::setDefaultMetadataCache($cache_bdd);


$frontendOptions = array(
    'caching'        => false,
    'lifetime'         => 7200,
    'debug_header'     => true, // for debugging
    'regexps'         => array(
           '^/$' => array('cache' => false)/*,
           '^/contact' => array('cache' => true),
           '^/credits' => array('cache' => true),
           '^/aide' => array('cache' => true),
           '^/droit' => array('cache' => true),
           /*'^/article/' => array('cache' => false), // we don't cache the ArticleController...
           '^/article/view/' => array(              // ...but we cache the "view" action of
               'cache' => true,                     // this ArticleController
               'cache_with_post_variables' => true,    // and we cache even there are some variables in $_POST
               'make_id_with_post_variables' => true,   // (but the cache will be dependent of the $_POST array)
           )*/
   )
);
$backendOptions = array(
    'cache_dir' => '../application/var/cache/'
);

$cache = Zend_Cache::factory('Page', 'File', $frontendOptions, $backendOptions);
$logger->log("Fin creation du cache", Zend_Log::DEBUG);
$logger->log("Demarrage du cache", Zend_Log::DEBUG);
$cache->start();

$auth = null;
if ( !$auth = $cache->load('auth') )
{
    $auth = Zend_Auth::getInstance();
    $cache->save($auth, 'auth');
}
 
 
$db = null;
if ( !$db = $cache->load('db') )
{
    $logger->log("Initialisation de la BDD", Zend_Log::DEBUG);
    $db = Zend_Db::factory($config->database->adapter, $config->database->params->toArray());
    Zend_Db_Table_Abstract::setDefaultAdapter($db);
    Zend_Registry::set('db',$db);
    $cache->save($db, 'db');
}


/*$acl = null;
if ( !$acl = $cache->load('acl') )
{
    $acl  = new hhAcl($auth);
    $cache->save($acl, 'acl');
}*/


$view = null;
if ( !$view = $cache->load('view') )
{
    $view = new Zend_View();
    $viewRenderer = Zend_Controller_Action_HelperBroker::getStaticHelper('viewRenderer');
    $viewRenderer->setView($view)->setViewSuffix('tpl');

    $cache->save($view, 'view');
}


$router = null;
if ( !$router = $cache->load('router') )
{
    //$router = new Zend_Controller_Router_Rewrite();
    $router = $front->getRouter(); // returns a rewrite router by default
    //$router->addRoute('default', new Zend_Controller_Router_Route_Module(array('controller' => 'site', 'action' => 'index')) );

    //route pour le profil d'un membre. URL de la forme 'membre/' suivi du login du membre
    $route = new Zend_Controller_Router_Route( 'admin/:controller/:action/*', array('module' => 'admin'));
    $router->addRoute('admin', $route);

    //GROUPE
    $route = new Zend_Controller_Router_Route( 'groupe/detail/:id', array('controller' => 'groupe', 'action' => 'detail'), array('id' => '\d+'));
    $router->addRoute('detailGroupe', $route);


    //EVENEMENT
    //route dynamique pour les evenements
    $route = new Zend_Controller_Router_Route( 'evenement/:id', array('controller' => 'evenement', 'action' => 'detail'), array('id' => '\d+'));
    $router->addRoute('detailEvenement', $route);


    //MEMBRE
    //route pour le profil d'un membre. URL de la forme 'membre/' suivi du login du membre
    $route = new Zend_Controller_Router_Route( 'membre/:nom', array('controller' => 'membre', 'action' => 'profil'));
    $router->addRoute('profilMembre', $route);

    $route = new Zend_Controller_Router_Route( 'profil', array('controller' => 'membre', 'action' => 'detail'));
    $router->addRoute('detailProfilMembre', $route);


    //AUTRE
    //route dynamique pour l'interface de gestion
    $route = new Zend_Controller_Router_Route('gestion/*', array('controller' => 'membre', 'action' => 'gestion'));
    $router->addRoute('gestion', $route);

    //route statique pour le formulaire de connexion
    $route = new Zend_Controller_Router_Route_Static('connexion', array('controller' => 'auth', 'action' => 'login'));
    $router->addRoute('connexion', $route);

    //route statique pour la deconnexion
    $route = new Zend_Controller_Router_Route_Static('deconnexion', array('controller' => 'auth', 'action' => 'logout'));
    $router->addRoute('deconnexion', $route);

    //route statique pour le formulaire d'enregistrement
    $route = new Zend_Controller_Router_Route_Static('inscription', array('controller' => 'auth', 'action' => 'register'));
    $router->addRoute('inscription', $route);

    //route statique pour le formulaire de contact
    $route = new Zend_Controller_Router_Route_Static('contact', array('controller' => 'site', 'action' => 'contact'));
    $router->addRoute('contact', $route);

    //route statique pour les credis
    $route = new Zend_Controller_Router_Route_Static('credits', array('controller' => 'site', 'action' => 'credits'));
    $router->addRoute('credits', $route);

    //route statique pour la page d'aide
    $route = new Zend_Controller_Router_Route_Static('aide', array('controller' => 'site', 'action' => 'help'));
    $router->addRoute('aide', $route);

    //route statique pour la page d'accueil
    $route = new Zend_Controller_Router_Route_Static('accueil', array('controller' => 'site', 'action' => 'index'));
    $router->addRoute('accueil', $route);

    //route statique pour la page legal
    $route = new Zend_Controller_Router_Route_Static('droit', array('controller' => 'site', 'action' => 'legals'));
    $router->addRoute('droit', $route);

    //route statique pour le formulaire de redaction
    //$router->addRoute('annonce/rediger', new Zend_Controller_Router_Route_Static( 'annonce/rediger', array('controller' => 'annonce', 'action' => 'new')) );

    $logger->log("Route cree", Zend_Log::DEBUG);

    $cache->save($router, 'router');
}


$front    ->setBaseUrl('/~uniapaco/')
        ->setControllerDirectory(array(
                'admin'        => realpath('../application/modules/admin/controllers/'),
                'default'    => realpath('../application/modules/uniapac/controllers/')
            ))
        ->throwExceptions(true)
        ->setRouter($router)
        //->returnResponse(true)
        //->registerPlugin(new hhControllerPluginAuth($auth, $acl, $view))
        //->registerPlugin(new Zend_Controller_Plugin_ErrorHandler())
        //->setParam('useDefaultControllerAlways', true)
        ->setParam('config', $config)
        ->setParam('db'    , $db)
        //->setParam('auth'  , $auth)
        //->setParam('acl'   , $acl)
        ->setParam('view'  , $view)
        ->setParam('cache'  ,$cache);
        //->setParam('noViewRenderer', true);


$logger->log("Dispatching", Zend_Log::DEBUG);
echo '<pre>';
try {
$response = $front->dispatch();
}
catch ( Exception $e ){

    echo sprintf('<hr><pre>DEBUG INFOS :<br /><strong>Exception de type <em>%s</em> <u>%s</u> envoyée dans %s à la ligne %d </strong> <p>Stack Trace : %s </p></pre><hr>',
                        get_class($e),
                        $e->getMessage(),
                        $e->getFile(),
                        $e->getLine(),
                        Zend_Debug::dump($e,null,false)
                       );
}
?>

Voici le message d'erreur :

Code:

DEBUG INFOS :
Exception de type Zend_Controller_Dispatcher_Exception Invalid controller specified (index) envoyée dans /home/uniapaco/application/lib/Zend/Controller/Dispatcher/Standard.php à la ligne 249  
Stack Trace : 

object(Zend_Controller_Dispatcher_Exception)#39 (6) {
  ["message:protected"] => string(36) "Invalid controller specified (index)"
  ["string:private"] => string(0) ""
  ["code:protected"] => int(0)
  ["file:protected"] => string(70) "/home/uniapaco/application/lib/Zend/Controller/Dispatcher/Standard.php"
  ["line:protected"] => int(249)
  ["trace:private"] => array(2) {
    [0] => array(6) {
      ["file"] => string(56) "/home/uniapaco/application/lib/Zend/Controller/Front.php"
      ["line"] => int(914)
      ["function"] => string(8) "dispatch"
      ["class"] => string(35) "Zend_Controller_Dispatcher_Standard"
      ["type"] => string(2) "->"
      ["args"] => array(2) {
        [0] => object(Zend_Controller_Request_Http)#36 (14) {
          ["_paramSources:protected"] => array(2) {
            [0] => string(4) "_GET"
            [1] => string(5) "_POST"
          }
          ["_requestUri:protected"] => string(11) "/~uniapaco/"
          ["_baseUrl:protected"] => string(10) "/~uniapaco"
          ["_basePath:protected"] => NULL
          ["_pathInfo:protected"] => string(1) "/"
          ["_params:protected"] => array(3) {
            ["controller"] => string(5) "index"
            ["action"] => string(5) "index"
            ["module"] => string(7) "default"
          }
          ["_aliases:protected"] => array(0) {
          }
          ["_dispatched:protected"] => bool(true)
          ["_module:protected"] => string(7) "default"
          ["_moduleKey:protected"] => string(6) "module"
          ["_controller:protected"] => string(5) "index"
          ["_controllerKey:protected"] => string(10) "controller"
          ["_action:protected"] => string(5) "index"
          ["_actionKey:protected"] => string(6) "action"
        }
        [1] => object(Zend_Controller_Response_Http)#37 (8) {
          ["_body:protected"] => array(0) {
          }
          ["_exceptions:protected"] => array(0) {
          }
          ["_headers:protected"] => array(0) {
          }
          ["_headersRaw:protected"] => array(0) {
          }
          ["_httpResponseCode:protected"] => int(200)
          ["_isRedirect:protected"] => bool(false)
          ["_renderExceptions:protected"] => bool(false)
          ["headersSentThrowsException"] => bool(true)
        }
      }
    }
    [1] => array(6) {
      ["file"] => string(36) "/home/uniapaco/public_html/index.php"
      ["line"] => int(230)
      ["function"] => string(8) "dispatch"
      ["class"] => string(21) "Zend_Controller_Front"
      ["type"] => string(2) "->"
      ["args"] => array(0) {
      }
    }
  }
}

la principale différence est que en local, j'accédais a l'appli grâce a http://localhost/ et en ligne grâce a http://MON_IP/~username/.

Lorsque que je change des paremetre ds le front controller, cela est détecté, dc le 'index.php' est bien chargé, apparemment c'est vraiment un problème dans le dispatch.

Merci de votre aide.

Dernière modification par nicolas2b (10-09-2008 09:52:46)

Hors ligne

 

#2 09-09-2008 17:14:09

philippe
Administrateur
Lieu: Grenoble
Date d'inscription: 01-03-2007
Messages: 1624

Re: [RESOLU]Invalid controller specified

Perso je parie sur un problème de majuscule. Si tu déploies sur un Unix/Linux, il est sensible à la casse.

Est-ce que ton IndexController.php a bien un I majuscule et un C majuscule ?
est-ce que tes répertoires de controlleur sont on bien la même casse que leur définition dans ton index.php ?

A mon avis, il faut chercher de ce coté.

A+, Philippe


twitter : @plv ; kitpages.fr : Création de sites internet à Grenoble et Paris

Hors ligne

 

#3 09-09-2008 17:38:19

mikaelkael
Administrateur
Lieu: Donges
Date d'inscription: 18-06-2007
Messages: 1176
Site web

Re: [RESOLU]Invalid controller specified


Less code = less bugs
Contributeur ZF - ZCE - ZFCE - Doc ZF (CHM & PDF) - Vice-trésorier AFUP 2011
Ubuntu 11.04 - ZendServer

Hors ligne

 

#4 10-09-2008 09:34:53

nicolas2b
Nouveau membre
Date d'inscription: 21-04-2008
Messages: 9

Re: [RESOLU]Invalid controller specified

J'ai développé sur Mac, et déployé sous Linux.
Pour mes controller :
-le fichier('physique') : indexController.php
-la classe IndexController (extends Zend_Controller_Action)

Ca a l'air correct ?!

Hors ligne

 

#5 10-09-2008 09:37:29

philippe
Administrateur
Lieu: Grenoble
Date d'inscription: 01-03-2007
Messages: 1624

Re: [RESOLU]Invalid controller specified

Ben non, justement il faut un grand I à ton IndexController.php

(mac os X est aussi case insensitive)

A+, Philippe


twitter : @plv ; kitpages.fr : Création de sites internet à Grenoble et Paris

Hors ligne

 

#6 10-09-2008 09:52:19

nicolas2b
Nouveau membre
Date d'inscription: 21-04-2008
Messages: 9

Re: [RESOLU]Invalid controller specified

Ca fonctionne :-)

MERCI

(et moi qui croyais que Mac, comme Linux, gérait la casse pareil - oh inexpérience rageante ;-) )

Hors ligne

 

Pied de page des forums

Propulsé par PunBB
© Copyright 2002–2005 Rickard Andersson
Traduction par punbb.fr

Graphisme réalisé par l'agence Rodolphe Eveilleau
Développement par Kitpages