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

 PHP Discussion :

Lien qui bascule en prod


Sujet :

PHP

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Août 2002
    Messages
    168
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 168
    Points : 123
    Points
    123
    Par défaut Lien qui bascule en prod
    Bonjour,
    Depuis peu, tout mes liens lancent l'environnement de prod. Lorsque j'arrive sur mon homepage :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo(sfConfig::get('sf_environment'));
    vaut bien dev mais lorsque je clique sur un lien de ce style :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    link_to('Filtrer', '/entreprises/4');
    Le frontend_dev.php s'enlève de l'adresse et le sf_environment me retourne prod.

    Tout fonctionnait bien et je n'ai pas fait de grosse manipulation il me sembe. De mémoire, j'ai lancé un $php symfony cc. C'est tout.

    Et dans mon apps/frontend/config/settings.yml, ça semble bon...

    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
    27
    28
    29
    30
    31
    32
    33
    34
    35
      1 # You can find more information about this file on the symfony website:                                                                                                     
      2 # http://www.symfony-project.org/reference/1_4/en/04-Settings
      3 
      4 prod:
      5   .settings:
      6     no_script_name:         false
      7     logging_enabled:        false
      8 
      9 dev:
     10   .settings:
     11     error_reporting:        <?php echo (E_ALL | E_STRICT)."\n" ?>
     12     web_debug:              true
     13     cache:                  false
     14     no_script_name:         false
     15     etag:                   false
     16 
     17 test:
     18   .settings:
     19     error_reporting:        <?php echo ((E_ALL | E_STRICT) ^ E_NOTICE)."\n" ?>
     20     cache:                  false
     21     web_debug:              false
     22     no_script_name:         false
     23     etag:                   false
     24 
     25 all:
     26   .settings:
     27     # Form security secret (CSRF protection)
     28     csrf_secret:            3e46f8ac0d82e0cb75c3f5b559fe71afe9b72eb2
     29 
     30     # Output escaping settings
     31     escaping_strategy:      true
     32     escaping_method:        ESC_SPECIALCHARS
     33 
     34     # Enable the database manager
     35     use_database:           true
    Mes recherches me parlent du module mod_rewrite de Apache, mais celui-ci est bien chargé.

    Une idée du problème ?

  2. #2
    Membre éprouvé Avatar de Herode
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2005
    Messages
    825
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2005
    Messages : 825
    Points : 933
    Points
    933
    Par défaut
    Je soupçonnerai plutôt ton .htaccess. Tu l'as modifié récemment ?

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Août 2002
    Messages
    168
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 168
    Points : 123
    Points
    123
    Par défaut
    Jamais touché ce fichier.

    Voila son contenu (web/.htaccess) :

    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
      1 Options +FollowSymLinks +ExecCGI
      2 
      3 <IfModule mod_rewrite.c>
      4   RewriteEngine On
      5 
      6   # uncomment the following line, if you are having trouble
      7   # getting no_script_name to work
      8   #RewriteBase /
      9 
     10   # we skip all files with .something
     11   #RewriteCond %{REQUEST_URI} \..+$
     12   #RewriteCond %{REQUEST_URI} !\.html$
     13   #RewriteRule .* - [L]
     14 
     15   # we check if the .html version is here (caching)
     16   RewriteRule ^$ index.html [QSA]
     17   RewriteRule ^([^.]+)$ $1.html [QSA]
     18   RewriteCond %{REQUEST_FILENAME} !-f                                                                                                                                        
     19 
     20   # no, so we redirect to our front web controller
     21   RewriteRule ^(.*)$ index.php [QSA,L]
     22 </IfModule>
    Je comprends pas trop son fonctionnement. Quelque chose te semble louche ?

  4. #4
    Membre éprouvé Avatar de Herode
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2005
    Messages
    825
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2005
    Messages : 825
    Points : 933
    Points
    933
    Par défaut
    Non, il est normal. Sauf erreur de ma part, il dit à peu près ceci :

    RewriteRule ^$ index.html [QSA]
    -> si l'url ne contient pas de requête (ex: www.monsite.fr), on va chercher www.monsite.fr/index.html

    RewriteRule ^([^.]+)$ $1.html [QSA]
    -> si l'url (ré-écrite, mais ici on s'en fiche) contient un nom sans '.', on ajoute l'extension html. Ex : www.monsite.fr/tagada devient www.monsite.fr/tagada.html

    RewriteCond %{REQUEST_FILENAME} !-f
    -> si l'url ré-écrite ne pointe pas sur un fichier html existant...

    RewriteRule ^(.*)$ index.php [QSA,L]
    -> ... on appelle www.monsite.fr/index.php

    Essaye d'activer les logs au niveau debug dans ton environnement de prod et examine les fichiers de log (après un php symfony cc), tu devrais voir à quel moment il effectue la redirection vers index.php.

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Août 2002
    Messages
    168
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 168
    Points : 123
    Points
    123
    Par défaut
    Je débute et je ne sais pas trop où se situe l'environnement de prod. J'ai suivi :
    http://blog.jetienne.com/2009/05/sym...g-in-prod.html mais pas de fichier log créé dans log/ je n'ai que frontend_dev.log.

    Par contre, j'ai essayé de suivre à nouveau le tuto de symfony-project et je viens de m'apercevoir que lorsque je tape cette url :
    http://localhost:8080/index.php
    ou
    http://localhost:8080

    Je tombe sur une erreur 404.

    Or dans mon routing.yml je redirige vers une page précise :

    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
    # You can find more information about this file on the symfony website:
      2 # http://www.symfony-project.org/reference/1_4/en/10-Routing
      3 
      4 index_by_categorie:
      5     url: /entreprises/:categorie
      6     param: { module: entreprise, action: index }
      7 
      8 index:
      9     url: /entreprises
     10     param: { module: entreprise, action: index }
     11 
     12 # default rules
     13 homepage:
     14   url:   /
     15   param: { module: entreprise, action: index }
     16 
     17 # generic rules
     18 # please, remove them by adding more specific rules
     19 #default_index:
     20 #  url:   /:module
     21 #  param: { action: index }
     22 
     23 #default:
     24 #  url:   /:module/:action/*
    Après je sais pas si ça a un lien mais bon.

  6. #6
    Membre éprouvé Avatar de Herode
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2005
    Messages
    825
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2005
    Messages : 825
    Points : 933
    Points
    933
    Par défaut
    Et si tu tapes http://localhost:8080/frontend_dev.php, qu'est-ce que tu as comme erreur ?

    Accessoirement, montre-nous le code dans { module: entreprise, action: index }, il y a peut-être un problème là-dedans.

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Août 2002
    Messages
    168
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 168
    Points : 123
    Points
    123
    Par défaut
    Je n'ai pas d'erruer avec cette url, j'arrive sur ma page d'accueil.

    Pour mon action executeIndex du module concerné :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     13   public function executeIndex(sfWebRequest $request)
     14   {
     15     $this->categorie = $request->getParameter('categorie');
     16 
     17     //récupération des catégories
     18     $this->categories = Doctrine_Core::getTable('Categorie')->findAll(Doctrine_Core::HYDRATE_RECORD);
     19 
     20     //entreprises au hasard dans le cas d'arrivé sur le site                                                                                            
     21     $this->entreprises = Doctrine_Core::getTable('Entreprise')->getRandomEntreprises(5);
     22   }

  8. #8
    Membre éprouvé Avatar de Herode
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2005
    Messages
    825
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2005
    Messages : 825
    Points : 933
    Points
    933
    Par défaut
    Si je comprends bien, l'appel à la page d'accueil avec frontend_dev.php
    marche normalement et celui avec index.php plante. Avant même d'aller plus loin, il faut savoir ce qui se passe ici, je parie que le problème d'environnement qui "change" quand tu cliques sur des liens sera résolu (ou éclairci) du même coup.

    Et là, à part trouver des traces dans le log d'apache et/ou réussir à activer les traces en prod., je ne vois pas bien comment procéder. Recommence les manipulations pour activer les traces, celle indiquées dans ton lien fonctionnent donc tu as du oublier quelque chose.

    NB : une version allégée du réglage dans le factories.yml de l'application dont tu règles les logs (apps/frontend en l'occurrence)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    prod:
      logger:
        class:   sfFileLogger
        param:
          level: warning
          loggers: ~
          file: %SF_LOG_DIR%/%SF_APP%_%SF_ENVIRONMENT%.log
    devrait marcher aussi

  9. #9
    Expert éminent
    Avatar de Michel Rotta
    Homme Profil pro
    DPO
    Inscrit en
    Septembre 2005
    Messages
    4 954
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : DPO
    Secteur : Distribution

    Informations forums :
    Inscription : Septembre 2005
    Messages : 4 954
    Points : 8 486
    Points
    8 486
    Par défaut
    Dans le factories.yml donné au départ.

    Le paramètre "no_script_name" est à false dans tous les cas.

    Le comportement normal de symfony est alors de mettre systématiquement le nom du script. Les pages appelées en prod devraient donc revenir avec index.php dans l'url, ce qui ne semble pas être le cas.


    C'est là que l'url est généré. Le .htaccess n'est là que pour le retour de l'URL. S'il n'est pas bon au départ (pas de nom de fichier) il ne peut être bon à l'arriver, donc le problème n'est pas dans le .htaccess.
    Si tu donnes un poisson à un homme, il mangera un jour. Si tu lui apprends à pêcher, il mangera toujours (Lao Tseu).

    • Pensez à valoriser les réponses pertinantes, cliquez sur le bouton vert +1 pour indiquer votre accord avec la solution proposée.
    • Pensez à utiliser la balise [code] pour afficher du code, elle est cachée sous le bouton [#] dans l'éditeur.
    • Une discussion est terminée ? Alors le bouton est votre ami !

  10. #10
    Membre régulier
    Profil pro
    Inscrit en
    Août 2002
    Messages
    168
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 168
    Points : 123
    Points
    123
    Par défaut
    Merci pour vos réponses. Etant au départ de mon projet, j'ai regénéré mon projet de 0. Je vous l'accorde, c'est pas super de pas avoir pigé... mais je n'ai pas beaucoup de temps à y consacrer.

    Mes derniers tests toutefois avant la regénération :

    J'ai généré le module de mes catégories pour voir si la base générée merdait aussi. Oui. L'index des catégories (liste) s'affiche bien mais tous les liens (hover) ne contiennent pas le frontend_dev.php dans l'url, ce qui fait planter le lien. Et maintenant que je repars de zéro, je vois que les liens générés ont bien le frontend_dev.php dans l'url. C'est pas une redirection après le clic je veux dire.

    Donc voila, je vais voir si je retombe sur le problème, mais cette fois, en prenant soin de bien noter tout ce que je fais comme manip et modification.

    Merci pour votre temps en tout cas !

Discussions similaires

  1. lien qui affiche dans un champs de texte
    Par tyarak dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 14/11/2005, 02h22
  2. Probleme avec un lien qui contien un apostrophe
    Par pierrot10 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 23/10/2005, 14h16
  3. Un lien qui ouvre sur une page spécifique d'un fichier
    Par chpog dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 24/08/2005, 14h56
  4. CSS : un lien qui prend toute une ligne d'un tableau.
    Par pmithrandir dans le forum Mise en page CSS
    Réponses: 7
    Dernier message: 20/04/2005, 16h52
  5. Réponses: 3
    Dernier message: 01/12/2003, 13h14

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