Précédent   Forum des professionnels en informatique > PHP > Outils > Zend > Zend Framework > MVC
MVC Forum de support sur le développement d'applications de type modèle-vue-contrôleur avec Zend Framework ainsi que vos questions sur les plugins, les helpers etc. Avant de poster -> Cours MVC, FAQ ZF Controller
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 07/06/2007, 17h47   #1
Invité régulier
 
Étudiant
Inscription : mai 2006
Messages : 29
Détails du profil
Informations personnelles :
Âge : 27

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : mai 2006
Messages : 29
Points : 7
Points : 7
Par défaut [MVC] Problème de routage

Bonjour, je rencontre un problème assez étonnant...
Je vous l'expose :

Je viens de débuter avec le Zend Framework, gràce à ce tres bon tuto :
http://g-rossolini.developpez.com/tu...?page=sommaire


Il y est expliqué comment résoudre l'erreur suivante : aucune adresse ne fonctionne, sauf index. La solution est de vérifier la redirection dans la rewrite rule.

Eh bien mon problème porte sur le même sujet : je récupère une erreur 500 lorsque je rentre l'url racine de mon site (www.monsite.fr) sans rajouter "/index".
Apparament, le IndexController n'est pas appelé...
Par contre toutes les autres pages marchent.

Si je rajoute "/index", je suis bien redirigé sur mon IndexController et la page s'affiche correctement.

mon hébergeur m'a donné le message d'erreur affiché dans le errlog : "Request exceeded the limit of 10 internal redirects due to probable configuration error. Use ‘LimitInternalRecursion’ to increase the limit if necessary"


Voici l'arborescence :


Code :
1
2
3
4
5
6
7
8
9
10
11
12
monsite/
      [plusieurs dossier pas importants]/
      www/
      sous-domaine/
            monSousDomaine/
                  www/
                        application/
                        library/
                        public/
                        .htaccess
                        index.php
            autreSousdomainePasImportant/
Zend Framework est installé dans monsite/sous-domaine/monSousDomaine/www/ library/

quand on tape l'url "www.monSousDomaine.monSite.fr" on tombe dans le dossier monsite/sous-domaine/monSousDomaine/www/ où est exécuté index.php (enfin il est SENSE etre exécuté... car pour l'instant je dois l'écrire en toutes lettres dans l'url pour qu'il soit exécuté)

Voici le code de index.php :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?php
error_reporting(E_ALL|E_STRICT);
date_default_timezone_set('Europe/Paris');
 
set_include_path('.' . PATH_SEPARATOR . './library'
     . PATH_SEPARATOR . './application/models/'
     . PATH_SEPARATOR . get_include_path());
include "Zend/Loader.php";
 
Zend_Loader::loadClass('Zend_Controller_Front');
 
// setup controller
$frontController = Zend_Controller_Front::getInstance();
$frontController->throwExceptions(true);
$frontController->setControllerDirectory('./application/controllers');
 
// run!
$frontController->dispatch();


En fait c'est EXACTEMENT celui du tutoriel cité plus haut.

.htaccess, c'est aussi exactement celui du tutoriel.



Enfin, le mod_rewrite est activé, donc ça ne vient pas de là...


J'ai vraiment besoin d'aide! A l'aide !
Merci d'avance !
Bast_ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/06/2007, 19h40   #2
Rédacteur
 
Avatar de Yogui
 
Homme Guillaume Rossolini
Directeur technique
Inscription : février 2004
Messages : 13 720
Détails du profil
Informations personnelles :
Nom : Homme Guillaume Rossolini
Localisation : France

Informations professionnelles :
Activité : Directeur technique

Informations forums :
Inscription : février 2004
Messages : 13 720
Points : 17 355
Points : 17 355
Salut

Est-ce que cela fonctionne sur ta machine de dév ?
__________________
Mes articles - Zend Certified Engineer (PHP + Zend Framework)
Ressources PHP - Ressources Zend Framework
Yogui est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/06/2007, 22h28   #3
Invité régulier
 
Étudiant
Inscription : mai 2006
Messages : 29
Détails du profil
Informations personnelles :
Âge : 27

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : mai 2006
Messages : 29
Points : 7
Points : 7
en fait je n'avais même pas essayé.
Et là c'est très bizarre...
J'ai copié monSousdomaine/ et collé dans mon www de easyphp.
Eh bien quandje lance localhost/monSousdomaine, page blanche!!!
Si je modifie le index.php et que APRES le dispatch();, je rajoute la ligne "echo 'coucou';" eh bien ... je ne vois que "coucou"...

J'en déduis que cette fois, quelque chose d'autre cloche
J'ai vérifié le mod_rewrite, c'est fait, mais ça ne règle pas le problème
Bast_ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/06/2007, 22h58   #4
Invité régulier
 
Étudiant
Inscription : mai 2006
Messages : 29
Détails du profil
Informations personnelles :
Âge : 27

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : mai 2006
Messages : 29
Points : 7
Points : 7
Après reprise étape par étape du tutoriel, il se trouve que l'IndexController est bien appelé.
indexAction également : si j'y place un echo, il est bien affiché.
Mais si indexAction fait ceci :

$this->view->title = "Accueil Doc-Annonces";
$this->render();

il n'y a aucun résultat....


(tiens on peut éditer...) EDIT :
En localhost, je peux faire une echo dans indexAction, mais pas appeler la vue (et si je tape localhost/monSousDomaine/index, ca fait une erreur not found)
Sur le serveur distant, j'ai un comportement adequat (l'appel de la vue, etc) mais seulement si je tape localhost/monSousDomaine/index.php. Si je retire index.php, ca plante
Bast_ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/06/2007, 12h04   #5
Rédacteur
 
Avatar de Yogui
 
Homme Guillaume Rossolini
Directeur technique
Inscription : février 2004
Messages : 13 720
Détails du profil
Informations personnelles :
Nom : Homme Guillaume Rossolini
Localisation : France

Informations professionnelles :
Activité : Directeur technique

Informations forums :
Inscription : février 2004
Messages : 13 720
Points : 17 355
Points : 17 355
J'ai reporté il y a quelques jours les modifications de l'article original (suite à la màj du framework lui-même) mais j'avoue ne pas avoir retesté le tuto... Je vais essayer de le faire ce soir, si cela se trouve le problème vient du nouveau tuto

Pense à mettre à jour ton framework pour que la version coïncide
__________________
Mes articles - Zend Certified Engineer (PHP + Zend Framework)
Ressources PHP - Ressources Zend Framework
Yogui est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/06/2007, 13h13   #6
Rédacteur
 
Avatar de doctorrock
 
Homme Julien Pauli
Architecte de système d'information
Inscription : mai 2006
Messages : 597
Détails du profil
Informations personnelles :
Nom : Homme Julien Pauli
Âge : 29
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Architecte de système d'information
Secteur : High Tech - Produits et services télécom et Internet

Informations forums :
Inscription : mai 2006
Messages : 597
Points : 5 015
Points : 5 015
Pour tester une appli sous ZF, je ne saurai trop vous conseiller un debuggeur adapté ( avec gestion de la pile d'appel, points de vue, breakpoints, etc... ) , et un framework de test ( type PHPUnit ou SimpleTest ).

Faire des "echo" ne sert à rien, car dans le cas de MVC de ZF, toute sortie est capturée dans le buffer lors du dispatching. Un "echo" risque d'etre mangé par le buffer de sortie.

De manière plus générale, dans une application MVC, le mode de debugguage à coup de "echo" est très rébarbatif, très limité, très lourd, et n'aide aucunement dans la maitrise du fonctionnement de son application.

Une application sous ZF pouvant facilement dépasser la dizaine, voire la centaine de classes, il me parait difficilement concevable de debbuguer ca avec des "echo".
PHPUnit est très bien, et en plus il est parfaitement géré par ZF, ZF possède aussi un ensemble complet de classes de tests, que vous pouvez executer au cas où ...
__________________
.: Expert contributeur certifié PHP/ZF :.
Mes articles - Twitter - GitHub
doctorrock est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/06/2007, 20h23   #7
Invité régulier
 
Étudiant
Inscription : mai 2006
Messages : 29
Détails du profil
Informations personnelles :
Âge : 27

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : mai 2006
Messages : 29
Points : 7
Points : 7
Malheureusement je débute, et je ne connais aucun de ces outils de débuggage (ne connaissant déjà que tres peu ZF, ca va devenir dur...)

Ensuite, je n'ai pas réglé mon problème d'exécution en localhost... sans doute à cause de la config de apache (je n'ai arrangé que le mod_rewrite, mais rien d'autre).

Par contre, mon problème sur le serveur distant es réglé grâce à la modif du htaccess :
Code :
1
2
3
4
5
6
7
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* index.php [L]
 
php_flag magic_quotes_gpc off
php_flag register_globals off
C'était bien une histoire de rewrite bouclant à l'iunfini. Mais la solution m'a été donnée par quelqu'un d'autre, et je n'y comprends rien ><
Bast_ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/06/2007, 16h16   #8
Invité régulier
 
Étudiant
Inscription : mai 2006
Messages : 29
Détails du profil
Informations personnelles :
Âge : 27

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : mai 2006
Messages : 29
Points : 7
Points : 7
Finalement, problème non résolu !
Cette fois, le problème est inversé

ce qui fonctionne :
- www.monSousDomaine.monSite.fr
- www.monSousDomaine.monSite.fr/index
- www.monSousDomaine.monSite.fr/index.php
- www.monSousDomaine.monSite.fr/index/test (j'ai créé une action testAction dans IndexController)

Ce qui ne fonctionne pas :
- www.monSousDomaine.monSite.fr/cv (dans le même dossier que IndexController, j'ai créé CvController.php)
- toutes les url appelant autre chose que index ...

Je commence vraiment à perdre le nord
Bast_ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/10/2007, 11h32   #9
Candidat au titre de Membre du Club
 
Inscription : octobre 2007
Messages : 9
Détails du profil
Informations personnelles :
Âge : 58
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : octobre 2007
Messages : 9
Points : 10
Points : 10
Pour apache >= v1.3
Lorsque l'on utilise le mod rewrite avec un alias, il faut rajouter

RewriteBase /votreAlias dans le .htaccess

sinon cela ne fonctionne que si le site est sous la racine.

http://httpd.apache.org/docs/2.0/mod/mod_rewrite.html


Donc l'exemple
Code :
1
2
3
4
5
RewriteEngine on
RewriteRule .* index.php
 
php_flag magic_quotes_gpc off
php_flag register_globals off
devient
Code :
1
2
3
4
5
6
RewriteEngine on
RewriteBase  /alias
RewriteRule .* index.php
 
php_flag magic_quotes_gpc off
php_flag register_globals off
Et là ca marche

Cdt
jpsoft est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/10/2007, 12h57   #10
Membre à l'essai
 
Inscription : août 2007
Messages : 74
Détails du profil
Informations personnelles :
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : août 2007
Messages : 74
Points : 21
Points : 21
As tu changé AllowOverride All ?
J'avais le même problème que toi au début et celà venait de là
MaitreTsiang est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 11h27.


 
 
 
 
Partenaires

Hébergement Web