IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

MVC PHP Discussion :

Retrouver le chemin du controleur [ZF 1.8]


Sujet :

MVC PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Mai 2008
    Messages
    62
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 62
    Par défaut Retrouver le chemin du controleur
    Bonjour,
    Ci-joint le code de mon index.php.
    Rien de plus classique.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    <?php
    // mise en place des répertoires et chargement des classes
    set_include_path('.'
    . PATH_SEPARATOR . './library'
    . PATH_SEPARATOR . './application/models/'
    . PATH_SEPARATOR . get_include_path());
     
    //autoload
    require_once 'Zend/Loader/Autoloader.php';
    Zend_Loader_Autoloader::getInstance();
     
    // setup controller
    $frontController = Zend_Controller_Front::getInstance();
    $frontController->throwExceptions(true);
    $frontController->setControllerDirectory('./application/controllers');
    $frontController->dispatch();
    Ce code fonctionne tres bien sur mon serveur local (wamp).
    Par contre sur mon serveur de production je recois le message suivant :

    Fatal error: Uncaught exception 'Zend_Controller_Dispatcher_Exception' with message 'Invalid controller specified (index)' in...
    Pour que cela fonctionne je dois charger manuellement le controller en ajoutant le code suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    ...
    . PATH_SEPARATOR . './application/controllers/'
    ...
     
    ...
    require_once 'indexController.php';
    ...
    Meme si cela fonctionne j'aimerai comprendre ce qui pose probleme.

    Un avis eclaire me serait bien utile...

  2. #2
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 506
    Par défaut
    Il n'y aurait pas une erreur de redirection avec le fichier .htaccess ?

  3. #3
    Membre confirmé
    Inscrit en
    Mai 2008
    Messages
    62
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 62
    Par défaut
    Le code du fichier .htaccess est le suivant.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    RewriteEngine on
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule .* index.php
    # Sécurité
    Options -Indexes
    # Configuration PHP
    php_flag magic_quotes_gpc off
    php_flag register_globals off
    php_flag short_open_tag on
    A signaler que le mod_rewrite est actif sur le serveur de production.

  4. #4
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 506
    Par défaut
    Citation Envoyé par diagonale Voir le message
    Le code du fichier .htaccess est le suivant.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    RewriteEngine on
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule .* index.php
    # Sécurité
    Options -Indexes
    # Configuration PHP
    php_flag magic_quotes_gpc off
    php_flag register_globals off
    php_flag short_open_tag on
    A signaler que le mod_rewrite est actif sur le serveur de production.
    et avec celui d'origine ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    RewriteEngine On
    RewriteCond %{REQUEST_FILENAME} -s [OR]
    RewriteCond %{REQUEST_FILENAME} -l [OR]
    RewriteCond %{REQUEST_FILENAME} -d
    RewriteRule ^.*$ - [NC,L]
    RewriteRule ^.*$ index.php [NC,L]

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2007
    Messages : 13
    Par défaut
    Déjà, les contrôleurs s'écrivent avec une majuscule "IndexController.php" et non pas "indexController.php".

    Ensuite, est-ce que ton index.php est à la racine du projet et donc est-ce que ./application pointe vraiment dans le répertoire application ?

    Tu peux facilement récupérer un chemin absolu avec ce petit code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    // si index.php est dans un répertoire /www
    define('ROOT',    dirname(dirname(__FILE__))) ;
    define('AP_ROOT', ROOT . '/application') ;
    Et ensuite utiliser ces constantes pour définir tes chemins :

    set_include_path(
    ROOT . '/library' . PATH_SEPARATOR .
    AP_ROOT . '/models' . PATH_SEPARATOR .
    get_include_path()
    );
    Je pense pas que ça soit un problème de .htaccess étant donné que Zend est bel et bien appelé...

  6. #6
    Membre confirmé
    Inscrit en
    Mai 2008
    Messages
    62
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 62
    Par défaut
    Merci pour vos diverses reponses.
    A mon grand depit le probleme venait de la majuscule devant IndexController. Bien que cela n'a pas pose de probleme en local (windows + wamp) cela ne fonctionnait pas sur mon serveur de production (unix).
    Desole d'avoir abuse de votre temps.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 8
    Dernier message: 18/09/2007, 18h04
  2. [VBA] Retrouver le chemin d'accès de la base ouverte
    Par menguygw dans le forum Access
    Réponses: 3
    Dernier message: 26/04/2006, 11h05
  3. Réponses: 4
    Dernier message: 19/04/2006, 14h19
  4. [SERVLET] retrouver son chemin
    Par sebos63 dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 12/09/2003, 08h59

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo