Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 28-06-2007 05:37:27

scott
Nouveau membre
Date d'inscription: 28-06-2007
Messages: 4

Erreur 404 permanente. Route dans le routeur qui ne marche pas?

Bonjour à tous,

Je suis débutant sur le Zend Framework, d'où quelques interrogations et incompréhensions, sur des problemes pourtant vraiment basics.

J'ai actuellement un probleme qui me semble insoluble : j'ai beau ajouter des routes dans le routeurs, faire les bonnes fonctions dans les bons controlleurs et appeler les bonnes vues (du moins je le pense), j'ai invariablement une erreur 404... Sauf pour la page d'accueil qui marche très bien... mais pas quand on tape l'adresse http://localhost/mondomaine/index/index.

Je suis partie pour moitié sur le tutoriel proposé par KitPages, et pour une autre moité sur la doc Zend Framework. L'architecture de l'appli est celle présentée par Kitpages

Voici mon fichier bootstrap (index.php, à la racine du site):

Code:

<?php
define("WEBAPP_DIR","C:/Documents and Settings/Manu/Mes documents/Travail/101dreamz/_DEV");
define("MODEL_DIR",WEBAPP_DIR."/PHP-INF");
define("ROOT_URL","http://localhost/101dreamz/");
define("BASE_URL","/101dreamz/");
define("ZEND_FRAMEWORK_DIR","C:/Documents and Settings/Manu/Mes documents/Travail/101dreamz/_DEV/ZEND_FRAMEWORK/library");
 
define("DB_SERVER","localhost");
define("DB_PORT","3306");
define("DB_NAME","101dreamz");
define("DB_USER","root");
define("DB_PASSWORD","");
define("DB_TYPE","PDO_MYSQL");
 
set_include_path(
  ".".PATH_SEPARATOR.
  MODEL_DIR.PATH_SEPARATOR.
  ZEND_FRAMEWORK_DIR.PATH_SEPARATOR.
  get_include_path()
);
 

 
require_once 'Zend/Controller/Front.php';
Zend_Controller_Front::run('C:/Documents and Settings/Manu/Mes documents/Travail/101dreamz/_DEV/PHP-INF/ctrl');
$controller = Zend_Controller_Front::getInstance();
$controller->setBaseUrl(BASE_URL);

// Router
Zend_Loader::loadClass('Zend_Controller_Router_Rewrite');
$router = new Zend_Controller_Router_Rewrite();
$route = new Zend_Controller_Router_Route(
    'test/display',
    array(
        'controller' => 'test',
        'action'     => 'display'
    )
);
$router->addRoute('test', $route);

?>

Comme on peut le voir, j'instancie un routeur, et je crée une nouvelle route, dont le chemin sera test/display et qui doit appeler un controller TestController.php ainsi que sa function 'action' displayAction(). Le tout associé à une vue qui se trouve sous PHP-INF\views\scripts\test et s'appelant display.phtml

Voici le code du controlleur

Code:

<?php
/** Zend_Controller_Action */
require_once 'Zend/Controller/Action.php';

class TestController extends Zend_Controller_Action
{
    public function displayAction()
    {
       //On ne fait rien, c'est just un test
    }
}
?>

voici celui de la vue

Code:

<!DOCTYPE html
PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
<head>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  <title>Erreur</title>
</head>
<body>
    <h1>Erreur apparue</h1>
    <p>Une erreur est apparue ; veuillez rééssayer plus tard.</p>
</body>
</html>

Et voici mon .htacces a la racine

Code:

RewriteEngine on
RewriteRule !\.(js|ico|gif|jpg|png|css)$ index.php

J'utilise la RC3 de la version.

J'ai retourné le probleme dans tout les sens, et je ne vois absolument pas ce qui provoque une 404 quand je fais http://localhost/mondomaine/test/display

Merci de votre aide

Dernière modification par scott (28-06-2007 05:47:30)

Hors ligne

 

#2 28-06-2007 10:21:12

fred wolf
Administrateur
Lieu: Bordeaux
Date d'inscription: 09-04-2007
Messages: 96

Re: Erreur 404 permanente. Route dans le routeur qui ne marche pas?

Bonjour,

peux-tu décrire l'arborescence sur le disque ? genre :

/application/
    /modules/
        /default/
            /controllers/
            /models/
            /views/
        /foo/
            /controllers/
            /models/
            /views/
        /bar/
            /controllers/
            /models/
            /views/

A+

fred

Hors ligne

 

#3 28-06-2007 10:51:48

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

Re: Erreur 404 permanente. Route dans le routeur qui ne marche pas?

Il y a un problème dans ta réécriture apache. Si elle marchait bien tu ne pourrais pas avoir de 404 (sauf pour des fichiers en .js, .ico, .gif,...).
Ca n'a pas encore de lien avec les routes que tu définis, tu devrais au moins être redirigé vers le framework.
Il faut trouver une raison pour laquelle ton .htaccess n'est pas pris en compte.
- est-ce qu'il est lisible ?
- est-ce qu'il est au bon endroit ?
- est-ce que le nom est bon ?
- Est-ce que tu peux regarder dans ton httpd.conf si tu as un "AllowOverride All" qui te permet d'écraser n'importe quelle conf avec un .htaccess ?

A+, Philippe


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

Hors ligne

 

#4 28-06-2007 12:50:42

scott
Nouveau membre
Date d'inscription: 28-06-2007
Messages: 4

Re: Erreur 404 permanente. Route dans le routeur qui ne marche pas?

Bonjour, et merci d'avoir répondu rapidement!

Pour Fred : mon arbo est de ce type ->

/ZENDFRAMEWORK (au meme niveau pour l'instant)
/PHP-INF/
        /ctrl/
              IndexController.php
              TestController.php
        /models/
        /views/
            /filters/
            /helpers/
            /scripts/
                /index/
                       index.phtml
                /test/
                       display.phtml
index.php
.htaccess



Pour Philippe : je pensais aussi a un probleme de htaccess. Mais alors dans ce cas la pourquoi la page d'index marche impecablement?
Pour répondre a tes questions :
- est-ce qu'il est lisible ? -> oui je pense. Tout dépend ce qu'on entend par lisible.
- est-ce qu'il est au bon endroit ? comme tu peux le voir sur l'arbo, il est à la racine du site
- est-ce que le nom est bon ? -> bien que faisant tourner ca sur un windows avec Xampp, le.htacces semble bon
- Est-ce que tu peux regarder dans ton httpd.conf si tu as un "AllowOverride All" qui te permet d'écraser n'importe quelle conf avec un .htaccess ? -> C'Est le cas : AllowOverride est bien a All

Je continue de regarder de mon coté. c'est forcément un truc tout con.... Merci encore de votre coup de main

Dernière modification par scott (28-06-2007 12:51:09)

Hors ligne

 

#5 28-06-2007 13:56:53

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

Re: Erreur 404 permanente. Route dans le routeur qui ne marche pas?

Je peux expliquer que la page d'index marche :

Si tu regardes l'URL : http://localhost/mondomaine/, tu tombes sur un répertoire. Apache regarde si il y a un fichier index.php dedans et donc il lance bien index.php, le framework est donc lancé et fonctionne normalement.

C'est un directive du httpd.conf qui explique qu'il va bien chercher le index.php à l'intérieur d'un répertoire. Un truc du genre :

Code:

DirectoryIndex index.php

Par contre le pourquoi ça ne marche pas pour les autres réécritures, je ne vois pas trop...

Est-ce que tu as bien activé le mod_rewrite dans ton apache ?

Sinon est-ce que tu peux essayer de configurer ton site directement dans la conf apache (httpd.conf) et pas dans le .htaccess ?

Ca donnerait quelque chose du genre :

Code:

<Location /mondomaine>
  RewriteEngine on
  RewriteBase /mondomaine
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteRule . /mondomaine/index.php [L]
</Location>

A+, Philippe

PS : Fred, si t'as une idée... perso, moi je vois pas trop où ça peut foirer...


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

Hors ligne

 

#6 29-06-2007 03:48:30

scott
Nouveau membre
Date d'inscription: 28-06-2007
Messages: 4

Re: Erreur 404 permanente. Route dans le routeur qui ne marche pas?

Merci Philippe et Fred.

J'ai résolu le probleme. en fait il y en avait deux.

Le premier, j'ai un peu honte.... Etant habitué à bosser sous Linux, je ne fais plus trop attention à la syntaxe du nom de fichier .htaccess. Pour moi ils sont 'naturellement' sous la forme .htaccess. La, sous un systeme windows, un petit malin l'avais renommé ht.access... Voila, j'avais pas fait gaffe tellement c'était naturel...

Le second probleme etait dans le fichier .htaccess lui même.

Code:

RewriteEngine on
RewriteRule !\.(js|ico|gif|jpg|png|css)$ index.php

n'a pas l'air de fonctionner (erreur 400). J'ai donc remplacé ça par le morceau de code que tu m'as donné, directement dans le fichier .htaccess (et non pas dans l'httpd.conf de apache comme tu le preconisais).

Et la tout est bon.

A un moment j'ai eu peur de devoir repasser à mon framework homemade smile

Merci encore. Ca m'a appris (une nouvelle fois....) que les trucs les plus cons sont souvent les plus emmerdant à trouver.

Hors ligne

 

#7 29-06-2007 09:20:23

haltabush
Membre
Lieu: Saumur
Date d'inscription: 20-04-2007
Messages: 64

Re: Erreur 404 permanente. Route dans le routeur qui ne marche pas?

scott a écrit:

Le premier, j'ai un peu honte.... Etant habitué à bosser sous Linux, je ne fais plus trop attention à la syntaxe du nom de fichier .htaccess. Pour moi ils sont 'naturellement' sous la forme .htaccess. La, sous un systeme windows, un petit malin l'avais renommé ht.access... Voila, j'avais pas fait gaffe tellement c'était naturel...

Merci encore. Ca m'a appris (une nouvelle fois....) que les trucs les plus cons sont souvent les plus emmerdant à trouver.

lol lol
Enfin il n'y a pas de quoi avoir honte, quand même : comme tu dis, c'est ce genre de trucs qui font perdre le plus de temps... Le plus dur, c'est d'aller expliquer ça à ton patron : "salut chef, désolé je suis en retard pour mon projet, j'ai mis 5 heures à renommer un fichier smile ".

Hors ligne

 

#8 29-06-2007 12:20:38

scott
Nouveau membre
Date d'inscription: 28-06-2007
Messages: 4

Re: Erreur 404 permanente. Route dans le routeur qui ne marche pas?

haltabush a écrit:

scott a écrit:

Le premier, j'ai un peu honte.... Etant habitué à bosser sous Linux, je ne fais plus trop attention à la syntaxe du nom de fichier .htaccess. Pour moi ils sont 'naturellement' sous la forme .htaccess. La, sous un systeme windows, un petit malin l'avais renommé ht.access... Voila, j'avais pas fait gaffe tellement c'était naturel...

Merci encore. Ca m'a appris (une nouvelle fois....) que les trucs les plus cons sont souvent les plus emmerdant à trouver.

lol lol
Enfin il n'y a pas de quoi avoir honte, quand même : comme tu dis, c'est ce genre de trucs qui font perdre le plus de temps... Le plus dur, c'est d'aller expliquer ça à ton patron : "salut chef, désolé je suis en retard pour mon projet, j'ai mis 5 heures à renommer un fichier smile ".

Effectivement lol

mais j'ai réglé aussi le problème en devenant moi même le patron sur ce projet : je me suis pas viré pour cette fois, mais pas loin  lol

Hors ligne

 

#9 27-08-2007 19:23:51

sauros
Nouveau membre
Date d'inscription: 27-08-2007
Messages: 1

Re: Erreur 404 permanente. Route dans le routeur qui ne marche pas?

Allo,

Je voulais juste ajouter ma propre expérience. J'ai lu la présente discussion mais cela ne n'a pas aidé mon propre problème.

En fait dans mon cas, j'avais un VirtualHost par défaut pour mon répertoire et c'est dans celui là que l'AllowOveride était à None. Donc, même si je m'était AllowOverride à All dans mon apache2.conf celui du VirtualHost le désactivait  mad

Soit en enlevant ce VirtualHost ou en le modifiant, le problème a été réglé

sauros

Hors ligne

 

#10 24-03-2008 23:00:55

outhman
Nouveau membre
Date d'inscription: 24-03-2008
Messages: 3

Re: Erreur 404 permanente. Route dans le routeur qui ne marche pas?

bonjour tout le monde, je travail sur un projet avec zend dans une société où ça marche bien. j'ai copier le dossier at je l'ai mis  au serveur wamp dans mon pc. mais j'obtient  toujours l'erreur 500 INTERNAL SERVER ERROR .j'ai supprimer tout les fichier htaccess. maintenant je peux acceder seulement à la page index.
à part ça j'obtient  ERROR NOT FOUND.
est ce qq peut m'aider sachant que j'ai modifier le httpconfig AllowOverride All mais ça marche tjr pas.
Merci

Hors ligne

 

#11 25-03-2008 07:37:12

sekaijin
Membre
Date d'inscription: 17-08-2007
Messages: 1137

Re: Erreur 404 permanente. Route dans le routeur qui ne marche pas?

erreur 500 signifie que ton serveur apache plante sur le traitement de la requête le .htaccess est foireux.

tu peux faire une copie de ton httpd.conf ajouter à la fin le contenu de ton .htaccess et utiliser en ligne de commande
apache -t copy_httpd.conf
apache va alors te dire si ta conf est OK
voici mon .htaccess

Code:

RewriteEngine on
RewriteRule !\.(js|ico|gif|jpg|png|css|html)$ index.php

php_flag zend.ze1_compatibility_mode off
php_flag magic_quotes_gpc off
php_flag register_globals off

A+JYT

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