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 :

Index.php à la racine versus \public


Sujet :

MVC PHP

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    87
    Détails du profil
    Informations personnelles :
    Âge : 56
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 87
    Points : 52
    Points
    52
    Par défaut Index.php à la racine versus \public
    Bonjour à toutes et tous,

    je dois mettre en place un site sur un serveur mutualisé pour lequel l'index.php devra se situer à sa racine et non dans le classique /public

    Voici donc en local, dans un 1er temps, mon arborescence :
    \application (classique ZF)
    \public (classique zf) avec son traditionnel index.php
    \include qui contient \zend..., \css, \scripts, \images...
    A la racine, index.php qui se contente d'un :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    include 'public/index.php';
    Et maintenant voici ce qui se passe :

    1 - en collant le .htaccess dans \public :

    - la page index.php s'affiche correctement avec prise en compte des css, scripts... Tout va bien
    - par contre impossible de naviguer sur les autres pages
    The requested URL /monsite/galerie was not found on this server.
    2 - en collant le même .htaccess à la racine, soit un cran au-dessus de public

    - je peux naviguer dans toutes les pages avec la même url que ci-dessus
    - par contre je n'ai plus accès à mes ressources \css, \scripts... alors que le chemin indiqué dans firebug est correct et que dans le même temps, \zend situé dans le même répertoire \include est lui parfaitement fonctionnel

    404 Not Found - http://localhost/monsite/include/css/mon.css"
    Je me suis bien inspiré de http://blog.generation-pc.net/2011/0...ent-mutualise/ et de son original en anglais, mais rien n'y fait.

    Demandez moi les contenus de fichier que vous souhaitez pour régler cette question :

    comment démarrer son site depuis la racine et non depuis \public ?

    Merci à tous

  2. #2
    Membre actif Avatar de DarkSeiryu
    Homme Profil pro
    Développeur Java
    Inscrit en
    Janvier 2009
    Messages
    425
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Janvier 2009
    Messages : 425
    Points : 275
    Points
    275
    Par défaut
    Salut.

    Est-ce que tu pourrais nous montrer le code de ton index.php STP ?

    DarkSeiryu

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    87
    Détails du profil
    Informations personnelles :
    Âge : 56
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 87
    Points : 52
    Points
    52
    Par défaut \public\index.php
    Salut, aucun soucis, le voici :

    \public\index.php

    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
    <?php
     
        define('GLOBAL_INCLUDE_PATH', "http://".$_SERVER['HTTP_HOST'].'/include/');
        defined('APPLICATION_PATH') || define('APPLICATION_PATH', realpath(dirname(__FILE__) . '/../application'));
        defined('APPLICATION_ENV') || define('APPLICATION_ENV', (getenv('APPLICATION_ENV') ? getenv('APPLICATION_ENV') : 'production'));
     
        // Inclusion de la librairie ZendF dans l'include_path
        set_include_path(implode(PATH_SEPARATOR, array(
            realpath(APPLICATION_PATH . '/../include/zend/library'),
            realpath(APPLICATION_PATH . '/../include'),
            get_include_path(),
        )));
     
        require_once 'Zend/Application.php';
        $application = new Zend_Application(APPLICATION_ENV, APPLICATION_PATH . '/configs/application.ini');
     
        $application->bootstrap()
                    ->run();
     
    ?>
    Rien que du très classique.

    Et pour rappel, je n'ai pas accès aux ressources autres que le Zend malgré des urls vers celles-ci correctes en debug (j'insiste).

    Merci d'avance de ton intérêt.

  4. #4
    Membre actif Avatar de DarkSeiryu
    Homme Profil pro
    Développeur Java
    Inscrit en
    Janvier 2009
    Messages
    425
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Janvier 2009
    Messages : 425
    Points : 275
    Points
    275
    Par défaut
    Ton dossier include où se trouve la librairie Zend, où qu'il se trouve ? Parce que si il est dans ton projet comme l'indique realpath(APPLICATION_PATH . '/../include/zend/library'), ton include 'public/index.php';, dans le index.php à la racine de ton projet, fausse tout.

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    87
    Détails du profil
    Informations personnelles :
    Âge : 56
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 87
    Points : 52
    Points
    52
    Par défaut
    Il se trouve au même niveau que application et public.
    Comme je l'ai indiqué :

    \application
    \models
    \config
    \....
    \include
    \zend\library\Zend\..
    \css
    \scripts
    \images
    \public

    ce qui justifie que pour y accéder on remonte d'un niveau par rapport à APPLICATION_PATH.

    D'ailleurs, aucun soucis du point de vue de zend puisque la navigation entre les pages fonctionne. En revanche, aucun accès à css, scripts... qui se trouvent au même niveau que zend pourtant.

  6. #6
    Membre actif Avatar de DarkSeiryu
    Homme Profil pro
    Développeur Java
    Inscrit en
    Janvier 2009
    Messages
    425
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Janvier 2009
    Messages : 425
    Points : 275
    Points
    275
    Par défaut
    Effectivement, j'aurais dû vérifier le fonctionnement du include avant de parler... Ben du coup désolé mais je ne vois pas d'om ça peut venir. Peut-être du .htaccess mais j'suis à la masse là-dessus.

    Bon courage.

  7. #7
    Membre éprouvé
    Avatar de 5h4rk
    Homme Profil pro
    CTO at TabMo
    Inscrit en
    Février 2011
    Messages
    813
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : CTO at TabMo
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2011
    Messages : 813
    Points : 1 297
    Points
    1 297
    Par défaut
    Bonjour,
    Je t invite a laisser l architecture de base et à l aide d un .htaccess au même niveau que tes repertoire de base, rediriger tout vers public/index.php

    Si tu as la main sur ton vhost fais cela dedans.

    Sinon dis moi où tu en es?

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    87
    Détails du profil
    Informations personnelles :
    Âge : 56
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 87
    Points : 52
    Points
    52
    Par défaut
    Bonjour,

    testé à l'instant. J'ai bien entendu enlevé pour ce cas de figure le index.php à la racine (celui faisant l'include du \public\index.php.

    Voici ce que cela donne :

    An error occurred

    Page not found

    Exception information:

    Message: Invalid controller specified (master)
    Stack trace:

    #0 X:\--==Developpement==--\www\master\bobleblobb\include\zend\library\Zend\Controller\Front.php(954): Zend_Controller_Dispatcher_Standard->dispatch(Object(Zend_Controller_Request_Http), Object(Zend_Controller_Response_Http)) #1 X:\--==Developpement==--\www\master\bobleblobb\include\zend\library\Zend\Application\Bootstrap\Bootstrap.php(97): Zend_Controller_Front->dispatch() #2 X:\--==Developpement==--\www\master\bobleblobb\include\zend\library\Zend\Application.php(366): Zend_Application_Bootstrap_Bootstrap->run() #3 X:\--==Developpement==--\www\master\bobleblobb\public\index.php(66): Zend_Application->run() #4 {main} Request Parameters:

    array ( 'controller' => 'master', 'action' => 'bobleblobb', 'module' => 'frontend', )
    Pour information, le .htaccess, lui aussi assez 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
    17
    18
    19
    20
    21
     
        Options -Indexes +FollowSymLinks                
     
        # definit environnement d execution du site
        SetEnv APPLICATION_ENV development
     
        # Permet le Rewriting
        RewriteEngine On 
     
        # Optimisation : protection contre certains aspirateurs de site
        RewriteCond %{HTTP_USER_AGENT} .*Advanced\ Email\ Extractor* [OR]
        RewriteCond %{HTTP_USER_AGENT} .*Wysigot* [OR]
        RewriteCond %{HTTP_USER_AGENT} .*HTTrack* [OR]
        RewriteCond %{HTTP_USER_AGENT} WebWhacker
     
        # url rewriting
        RewriteCond %{REQUEST_FILENAME} -s [OR]
        RewriteCond %{REQUEST_FILENAME} -l [OR]
        RewriteCond %{REQUEST_FILENAME} -d
        RewriteRule ^.*$ - [NC,L]
        RewriteRule ^.*$ public/index.php [NC,L]

  9. #9
    Membre éprouvé
    Avatar de 5h4rk
    Homme Profil pro
    CTO at TabMo
    Inscrit en
    Février 2011
    Messages
    813
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : CTO at TabMo
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2011
    Messages : 813
    Points : 1 297
    Points
    1 297
    Par défaut
    Essaye avec ce .htaccess au même niveau que tous les dossiers public application etc ...

    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
     
     
        Options -Indexes +FollowSymLinks                
     
        # definit environnement d execution du site
        SetEnv APPLICATION_ENV development
     
        # Permet le Rewriting
        RewriteEngine On 
        RewriteBase /public/
     
        # Optimisation : protection contre certains aspirateurs de site
        RewriteCond %{HTTP_USER_AGENT} .*Advanced\ Email\ Extractor* [OR]
        RewriteCond %{HTTP_USER_AGENT} .*Wysigot* [OR]
        RewriteCond %{HTTP_USER_AGENT} .*HTTrack* [OR]
        RewriteCond %{HTTP_USER_AGENT} WebWhacker
     
        # url rewriting
        RewriteCond %{REQUEST_FILENAME} -s [OR]
        RewriteCond %{REQUEST_FILENAME} -l [OR]
        RewriteCond %{REQUEST_FILENAME} -d
        RewriteRule ^.*$ - [NC,L]
        RewriteRule ^.*$ /public/index.php [NC,L]

  10. #10
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    87
    Détails du profil
    Informations personnelles :
    Âge : 56
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 87
    Points : 52
    Points
    52
    Par défaut
    Belle tentative mais sans succès.

    Je me retrouve avec dans la barre d'adresse :
    et en message d'erreur :
    The requested URL /public/index.php was not found on this server.
    Alors que bien entendu, comme pour mes ressources, j'ai bien mon /public/index.php de dispo.

    J'ai également testé le httpd.conf dans différentes config à savoir :
    Partie générique pour le www :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    <Directory "x:/--==Developpement==--/www/">
        Options Indexes
    #on désactive htaccess par défaut, on active ou non par site
        AllowOverride None
        Order Deny,Allow
        Deny from all
        Allow from 127.0.0.1
    </Directory>
    Partie spécifique au site dans différentes config :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <Directory "x:/--==Developpement==--/www/mon/site/public">
        AllowOverride All
    </Directory>
    puis testé ainsi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <Directory "x:/--==Developpement==--/www/mon/site">
        AllowOverride All
    </Directory>
    Sans succès.

  11. #11
    Membre éprouvé
    Avatar de 5h4rk
    Homme Profil pro
    CTO at TabMo
    Inscrit en
    Février 2011
    Messages
    813
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : CTO at TabMo
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2011
    Messages : 813
    Points : 1 297
    Points
    1 297
    Par défaut
    Remplace /public/index.php par /index.php

  12. #12
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    87
    Détails du profil
    Informations personnelles :
    Âge : 56
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 87
    Points : 52
    Points
    52
    Par défaut
    Dans ce cas, voici ce que j'obtiens selon le httpd.conf :

    avec
    <Directory "x:/--==Developpement==--/www/mon/site/public">
    AllowOverride All
    </Directory>
    la page me présente arborescence du site (\application, \include, \public...)

    avec
    <Directory "x:/--==Developpement==--/www/mon/site">
    AllowOverride All
    </Directory>
    je me retrouve avec la même page que lorsque l'on demande localhost dans wamp à savoir la page d'Accueil WampServer.

  13. #13
    Membre éprouvé
    Avatar de 5h4rk
    Homme Profil pro
    CTO at TabMo
    Inscrit en
    Février 2011
    Messages
    813
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : CTO at TabMo
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2011
    Messages : 813
    Points : 1 297
    Points
    1 297
    Par défaut
    Ah mais tu as accès à ton vhost ?

    Donc il vaut mieux tout mettre dedans.

    Envoie moi son contenu aunsi que celui du .htaccess

  14. #14
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    87
    Détails du profil
    Informations personnelles :
    Âge : 56
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 87
    Points : 52
    Points
    52
    Par défaut
    Je veux bien te transmettre tout ce que tu veux mais, au risque de passer pour l'ignare de service, qu'appelles tu mon vhost ?

  15. #15
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 727
    Points
    10 727
    Par défaut
    oui t'es chez quel hébergeur ?

  16. #16
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    87
    Détails du profil
    Informations personnelles :
    Âge : 56
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 87
    Points : 52
    Points
    52
    Par défaut
    Salut,

    le soucis soulevé dans ce post est en local. Si je n'arrive pas à faire fonctionner le truc en local, je me vois mal barré pour le diffuser chez un hébergeur, qui se trouve être ici Ikoula.

    Isn't it ?!

  17. #17
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 727
    Points
    10 727

  18. #18
    Membre éprouvé
    Avatar de 5h4rk
    Homme Profil pro
    CTO at TabMo
    Inscrit en
    Février 2011
    Messages
    813
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : CTO at TabMo
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2011
    Messages : 813
    Points : 1 297
    Points
    1 297
    Par défaut
    Stealth, ton exemple ne prends pas en compte ma remarques.
    Il ne faut pas utiliser de .htaccess

    Voilà donc l'exemple :
    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
     
    <VirtualHost *:80>
              ServerName example-zend.local
              DocumentRoot /var/www/example-zend/public
     
              SetEnv APPLICATION_ENV "development"
              setEnv APPLICATION_PATH "/var/www/example-zend/application"
     
     
              <Directory /var/www/example-zend/public>
                  DirectoryIndex index.php
                  AllowOverride none
                  Order allow,deny
                  Allow from all
              </Directory>
     
              RewriteEngine On
              RewriteRule !\.(js|ico|gif|jpg|png|css)$ /index.php
    </VirtualHost>

  19. #19
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    87
    Détails du profil
    Informations personnelles :
    Âge : 56
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 87
    Points : 52
    Points
    52
    Par défaut
    Ok,

    dès que je peux, je teste en mode hôte virtuel.

    On croise les doigts.

    Et bien sur je vous remonte le résultat.

  20. #20
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 727
    Points
    10 727
    Par défaut
    Citation Envoyé par 5h4rk Voir le message
    Stealth, ton exemple ne prends pas en compte ma remarques.
    Il ne faut pas utiliser de .htaccess
    Ils ne parlent pas d'utiliser un .htaccess

Discussions similaires

  1. redirection de index.php vers racine
    Par redah75 dans le forum Référencement
    Réponses: 4
    Dernier message: 10/05/2012, 13h15
  2. htaccess protection du rép sauf index.php - possible?
    Par nagouille dans le forum Apache
    Réponses: 5
    Dernier message: 28/02/2006, 08h28
  3. [MySQL] les messages de mon index.php.
    Par cari dans le forum PHP & Base de données
    Réponses: 14
    Dernier message: 18/01/2006, 09h21
  4. Réponses: 2
    Dernier message: 29/10/2005, 17h15
  5. exécution des fichiers index.php
    Par berry dans le forum Apache
    Réponses: 4
    Dernier message: 20/12/2004, 20h29

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