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 :

Erreur 404 sur appel de vues dans tuto de Rob


Sujet :

MVC PHP

  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    320
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 320
    Par défaut Erreur 404 sur appel de vues dans tuto de Rob
    Salut à tous,

    je suis en train de faire le tuto de Rob Allen (traduit par Guillaume Rossolini, merci ), mais j'ai manifestement un problème.

    Configuration:
    ----------------
    MAMP v1.5b1, soit Apache 2.0 et PHP5.2.0
    mod_rewrite activé
    ----------------

    L'adresse http://localhost:8888/zf-tutorial/ "fonctionne" (c'est-à-dire que je me retrouve bien dans index.php)

    En revanche, dès que j'essaye d'appeler une vue du contrôleur Index, je tombe sur du 404:

    http://localhost:8888/zf-tutorial/index/index
    http://localhost:8888/zf-tutorial/index/ajouter
    http://localhost:8888/zf-tutorial/index/modifier
    http://localhost:8888/zf-tutorial/index/supprimer

    Ces adresses-là ne fonctionne pas.

    J'ai ajouté

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $frontController->setBaseUrl('/zf-tutorial/');
    dans index.php, comme indiqué dans la section "Résolution des problèmes" en fin de tuto, mais rien n'a changé.

    Une idée ?

    Merci aux bonnes âmes qui répondront ainsi qu'à tous ceux qui prendront la peine de lire ceci mais qui n'ont pas de solution à proposer.

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 14
    Par défaut
    bonjour.
    Et concernant le fichier .htaccess ?
    tout est redirigé sur index.php ?

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    320
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 320
    Par défaut
    Citation Envoyé par allbizznet
    bonjour.
    Et concernant le fichier .htaccess ?
    tout est redirigé sur index.php ?
    Pardon pour l'oubli

    Effectivement c'est redirigé normalement, puisque j'ai suivi à la lettre le tutorial.

    Voici le contenu du fichier .htaccess qui se trouve à la racine du projet, dans le répertoire zf-tutorial:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    RewriteEngine on
    RewriteRule .* index.php
     
    php_flag magic_quotes_gpc off
    php_flag register_globals off

  4. #4
    Expert confirmé
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 666
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 666
    Par défaut
    regarde dans la configuration d'Apache si tu n'as pas un "AllowOverride none" qui interdirai l'utilisation des fichiers .htaccess

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    320
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 320
    Par défaut
    Citation Envoyé par mathieu
    regarde dans la configuration d'Apache si tu n'as pas un "AllowOverride none" qui interdirai l'utilisation des fichiers .htaccess
    Je pense que de ce côté-là, ça fonctionne, puisque j'ai créé des fichiers .htaccess dans certains sous-dossiers, comme prévu dans le tuto, pour interdire l'accès direct à ces sous-dossiers (par exemple /application/library). Effectivement, le serveur répond 403 dans ce cas-là, donc le .htaccess fonctionne.

    Voici toutefois ce que j'ai trouvé dans le httpd.conf, qui je pense doit correspondre à la gestion des accès (car il y a plusieurs directives Allow Override) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    # Each directory to which Apache has access can be configured with respect
    # to which services and features are allowed and/or disabled in that
    # directory (and its subdirectories). 
    #
    # First, we configure the "default" to be a very restrictive set of 
    # features.  
    #
    <Directory />
        Options Indexes FollowSymLinks
        AllowOverride All
    </Directory>

  6. #6
    Expert confirmé
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 666
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 666
    Par défaut
    Citation Envoyé par *.Har(d)t
    Voici toutefois ce que j'ai trouvé dans le httpd.conf, qui je pense doit correspondre à la gestion des accès (car il y a plusieurs directives Allow Override) :
    là c'est les droits généraux à la racine, c'est possible qu'il y aie des autres directives qui modifient le code que tu as montrée

    pour les erreurs 403, est ce que le contenu du répertoire s'affiche quand tu renommes le fichier .htaccess ?

  7. #7
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    320
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 320
    Par défaut
    Citation Envoyé par mathieu
    là c'est les droits généraux à la racine, c'est possible qu'il y aie des autres directives qui modifient le code que tu as montrée

    pour les erreurs 403, est ce que le contenu du répertoire s'affiche quand tu renommes le fichier .htaccess ?
    Il y a des AllowOverride None, mais ils ne concernent que des répertoires précis de MAMP :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <Directory "/Applications/MAMP/Library/icons">
        Options Indexes MultiViews
        AllowOverride None
        Order allow,deny
        Allow from all
    </Directory>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <Directory "/Applications/MAMP/bin/phpMyAdmin">
        Options Indexes MultiViews
        AllowOverride None
        Order allow,deny
        Allow from all
    </Directory>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <Directory "/Applications/MAMP/bin/SQLiteManager">
        Options Indexes MultiViews
        AllowOverride None
        Order allow,deny
        Allow from all
    </Directory>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <Directory "/Applications/MAMP/bin/mamp">
        Options Indexes MultiViews
        AllowOverride None
        Order allow,deny
        Allow from all
    </Directory>
    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
    17
    18
    19
    <Directory "/Applications/MAMP/Library/manual">
        Options Indexes
        AllowOverride None
        Order allow,deny
        Allow from all
     
        <Files *.html>
            SetHandler type-map
        </Files>
     
        SetEnvIf Request_URI ^/manual/de/ prefer-language=de
        SetEnvIf Request_URI ^/manual/en/ prefer-language=en
        SetEnvIf Request_URI ^/manual/es/ prefer-language=es
        SetEnvIf Request_URI ^/manual/fr/ prefer-language=fr
        SetEnvIf Request_URI ^/manual/ja/ prefer-language=ja
        SetEnvIf Request_URI ^/manual/ko/ prefer-language=ko
        SetEnvIf Request_URI ^/manual/ru/ prefer-language=ru
        RedirectMatch 301 ^/manual(?:/(de|en|es|fr|ja|ko|ru)){2,}(/.*)?$ /manual/$1$2
    </Directory>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <Directory "/Applications/MAMP/cgi-bin">
        AllowOverride None
        Options None
        Order allow,deny
        Allow from all
    </Directory>
    Si je renomme le .htaccess en "toto" dans un sous-répertoire, j'obtiens bien la liste du contenu.

  8. #8
    Expert confirmé
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 666
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 666
    Par défaut
    Citation Envoyé par *.Har(d)t
    Si je renomme le .htaccess en "toto" dans un sous-répertoire, j'obtiens bien la liste du contenu.
    d'accord donc ça confirme que les fichiers .htaccess sont bien pris en compte et donc je n'ai absolument aucune autre idée pour t'aider

  9. #9
    Membre Expert

    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 278
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 278
    Par défaut
    Où se situe index.php dans ton arborescence ?

  10. #10
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    320
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 320
    Par défaut
    Citation Envoyé par mathieu
    d'accord donc ça confirme que les fichiers .htaccess sont bien pris en compte et donc je n'ai absolument aucune autre idée pour t'aider
    Merci quand même

    Citation Envoyé par vg33
    Où se situe index.php dans ton arborescence ?
    index.php est situé directement dans le répertoire zf-tutorial. Voici le détail de l'arborescence (sauf le répertoire Zend, qui est trop volumineux pour être détaillé ici, mais que certains connaissent sûrement déjà
    Je n'ai pas mis les .htaccess non plus.

    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
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
     
    zf-tutorial
    |_index.php
    |_application
       |_config.ini
       |_controllers
          |_IndexController.php
       |_library
          |_Zend
       |_models
       |_public
          |_images
          |_scripts
          |_styles
             |_site.css
       |_views
             |_filters
             |_helpers
             |_scripts
                |_footer.phtml
                |_header.phtml
                |_index
                   |_ajouter.phtml
                   |_index.phtml
                   |_modifier.phtml
                   |_supprimer.phtml

  11. #11
    Expert confirmé
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 666
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 666
    Par défaut
    Citation Envoyé par *.Har(d)t
    Voici le détail de l'arborescence
    chez moi le répertoire "library" et au même niveau que "application". mais ça ne change rien à ton problème actuel, c'est un point à vérifier plus tard si tu as une erreur PHP

    pour ton problème actuel, j'ai peut-être trouvé autre chose, essaye ça dans le fichier .htaccess :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    RewriteEngine on
    RewriteBase /zf-tutorial/
     
    RewriteRule .* index.php
     
    php_flag magic_quotes_gpc off
    php_flag register_globals off

  12. #12
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    320
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 320
    Par défaut
    Citation Envoyé par mathieu
    chez moi le répertoire "library" et au même niveau que "application". mais ça ne change rien à ton problème actuel, c'est un point à vérifier plus tard si tu as une erreur PHP

    pour ton problème actuel, j'ai peut-être trouvé autre chose, essaye ça dans le fichier .htaccess :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    RewriteEngine on
    RewriteBase /zf-tutorial/
     
    RewriteRule .* index.php
     
    php_flag magic_quotes_gpc off
    php_flag register_globals off
    Ah ah ah ! On progresse !

    Effectivement, en vérifiant dans le tuto, la structure des répertoires n'était pas bonne. Heureusement que tu l'as remarqué !

    J'ai créé mes répertoires en ligne de commande et je n'ai pas fait trop attention, j'ai fait une fausse manip.

    En remontant /library et /public dans /zf-tutorial, le fichier index.php affiche maintenant un titre en gras "Mes albums"

    Par contre, le problème sur les url type http://localhost:8888/zf-tutorial/index/ajouter est toujours d'actualité, avec ou sans la modif dans le .htaccess

    Merci en tout cas pour ce premier pas dans la bonne direction, ça m'apprendra à être plus attentif !

    EDIT:

    Ca n'aura pas fonctionné longtemps !
    Maintenant il mouline pour interpréter index.php, et finalement il me propose de le télécharger !
    Et il n'affiche plus "Mes albums", comme la première fois.

    Bref, status quo...

  13. #13
    Expert confirmé
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 666
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 666
    Par défaut
    pour l'erreur du fichier index, essaye de redémarrer Apache à tout hasard

    qu'est ce qui apparait dans les log d'erreur et d'accès quand tu as l'erreur 404 ?

  14. #14
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    320
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 320
    Par défaut
    Citation Envoyé par mathieu
    pour l'erreur du fichier index, essaye de redémarrer Apache à tout hasard

    qu'est ce qui apparait dans les log d'erreur et d'accès quand tu as l'erreur 404 ?
    J'ai redémarré Apache, mais ça ne change rien.

    J'en ai profité pour modifier la config de MAMP et repasser sur le port 80, pour ne plus avoir besoin de spécifier le port dans l'URL, mais rien à faire, même sur le port standard ça ne marche pas.

    Ta question est intéressante, ça me donne une poiste : En vérifiant le log, j'ai l'impression que ce qui merde c'est surtout l'existence du répertoire "index", car quelle que soit l'url appelée, il bloque au niveau de "index" (et pas "index/ajouter" par exemple)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    [Tue Jul 10 14:28:43 2007] [error] [client 127.0.0.1] File does not exist: /Users/Philippe/Documents/www/zf-tutorial/index
    J'en ai des lignes et des lignes, toutes les mêmes.

    EDIT:
    ------

    Cette piste me fait penser qu'il s'agir très certainement d'un problème de réécriture Apache.
    Je vais tout reprendre à zéro...

  15. #15
    Membre Expert

    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 278
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 278
    Par défaut
    Personnellement, j'ai suivi les préconisations de Zend pour l'arborescence, et ça marche pour le même tutoriel :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    |_zf-tutorial
        |_application
        |_library
        |_www
            |_css
            |_images
            |_js
            |_.htaccess
            [_index.php
    Le .htaccess dans cette arborescence est celui qui configure le rewriting.
    Chez moi, ça fonctionne.

  16. #16
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    320
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 320
    Par défaut
    Bon j'arrive à le faire tourner sur Windows sous WAMP maintenant, mais sous MAMP sous Mac OS X ça veut pas.

    Probablement un AllowOverride dans un fichier conf, mais pas moyen de mettre la main dessus.

  17. #17
    Expert confirmé
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 666
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 666
    Par défaut
    Citation Envoyé par *.Har(d)t
    Probablement un AllowOverride dans un fichier conf, mais pas moyen de mettre la main dessus.
    mets le fichier httpd.conf en pièce jointe si tu veux qu'on jette un coup d'oeil

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 15/05/2012, 14h47
  2. Erreur OLE sur appel Javascript dans TWebBrowser
    Par 2nd Floor dans le forum Débuter
    Réponses: 8
    Dernier message: 21/09/2011, 15h49
  3. Erreur Thread sur Appel dans DLL
    Par Danyel dans le forum VB.NET
    Réponses: 10
    Dernier message: 27/10/2008, 23h57
  4. Réponses: 3
    Dernier message: 08/11/2006, 17h56
  5. appeller une Vue dans un Select
    Par DR. dans le forum Langage SQL
    Réponses: 2
    Dernier message: 14/12/2004, 16h59

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