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

Symfony PHP Discussion :

Backend.php vers /admin + guard


Sujet :

Symfony PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre régulier
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2011
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 11
    Par défaut Backend.php vers /admin + guard
    Bonjour à tous,

    Je viens vers vous suite à un problème subtilement présent dans le projet symfony sur lequel je bosse actuellement.

    J'ai un backend généré pour mon site. J'ai installé le plugin sfAdminDashPlugin ainsi que le fameux sfGuardPlugin.

    Jusqu'ici tout va bien.
    J'ai configuré comme spécifié dans la doc de admindash la connexion avec sfGuardPlugin en créant un module sfGuardAuth dans le backend, configuré les actions:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <?php
    require_once(sfConfig::get('sf_root_dir').'/plugins/sfDoctrineGuardPlugin/modules/sfGuardAuth/lib/BasesfGuardAuthActions.class.php');
    class sfGuardAuthActions extends BasesfGuardAuthActions
    {
      public function preExecute()
      {
        sfForm::disableCSRFProtection();
      }
    }
     
    ?>
    et le template signinsuccess.php

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <?php include_partial('sfAdminDash/login', array('form' => $form)); ?>
    J'aimerai ensuite supprimé l'url backend.php et la remplacer par /admin

    J'ai donc activer le no_script_name à true. Dans mon routage, la route par défaut est donc

    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
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
     
    sf_atos_cart:
      class: sfDoctrineRouteCollection
      options:
        model:                sf_atos_cart
        module:               sf_atos_cart
        prefix_path:          /admin/sf_atos_cart
        column:               id
        with_wildcard_routes: true
     
    abonnement_type:
      class: sfDoctrineRouteCollection
      options:
        model:                abonnementType
        module:               abonnementType
        prefix_path:          /admin/abonnementType
        column:               id
        with_wildcard_routes: true
     
    magazine:
      class: sfDoctrineRouteCollection
      options:
        model:                magazine
        module:               magazine
        prefix_path:          /admin/magazine
        column:               id
        with_wildcard_routes: true
     
    abonnementType:
      class: sfDoctrineRouteCollection
      options:
        model:                abonnementType
        module:               abonnementType
        prefix_path:          /admin/abonnementType
        column:               id
        with_wildcard_routes: true
     
    abonne:
      class: sfDoctrineRouteCollection
      options:
        model:                abonne
        module:               abonne
        prefix_path:          /admin/abonne
        column:               id
        with_wildcard_routes: true
     
    atos:
      class: sfDoctrineRouteCollection
      options:
        model:                sf_atos_cart
        module:               sf_atos_cart
        prefix_path:          /admin/sf_atos_cart
        column:               id
        with_wildcard_routes: true
     
    # default rules
    homepage:
      url:   /admin/
      param: { module: sfAdminDash, action: dashboard }
     
    sf_guard_signin:
          url:   /guard/login
          param: { module: sfGuardAuth, action: signin }
     
    sf_guard_signout:
          url:   /guard/logout
          param: { module: sfGuardAuth, action: signout }
     
    sf_guard_password:
          url:   /guard/request_password
          param: { module: sfGuardAuth, action: password }
     
    # generic rules
    # please, remove them by adding more specific rules
    default_index:
      url:   /:module
      param: { action: index }
     
    default:
      url:   /:module/:action/*
    et dans mon fichier 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
     
    RewriteCond %{REQUEST_URI} ^/admin/?
    RewriteRule ^/admin/(.*)$ backend_dev.php?$1 [QSA,L]
     
    #RewriteCond %{REQUEST_URI} ^/guard/?
      RewriteRule ^guard/(.*)$ backend_dev.php/guard/$1 [QSA,L]
     
      # we skip all files with .something
      RewriteCond %{REQUEST_URI} \..+$
      RewriteCond %{REQUEST_URI} !\.html$
      RewriteCond %{REQUEST_URI} !\.php
      RewriteRule .* - [L]
     
      # we check if the .html version is here (caching)
      RewriteRule ^$ index.html [QSA]
      RewriteRule ^([^.]+)$ $1.html [QSA]
      RewriteCond %{REQUEST_FILENAME} !-f
     
      # no, so we redirect to our front web controller
      RewriteRule ^(.*)$ index.php [QSA,L]
    En local, sur mon mac avec Mamp, tout marche parfaitement.

    Dès que je passe sur mon serveur de prod chez ovh, ça passe plus.

    Précisement, l'accès à http://abo.travail.lemensuel.com/admin/ (admin et admin) fonctionne bien, donc la première partie du htaccess fonctionne.

    Par contre une fois le formulaire soumis, normalement je suis censé tombé sur la route homepage, mais j'obtiens une belle erreur 500.

    L'entrée avec http://abo.travail.lemensuel.com/backend_dev.php/admin/ marche bien

    Quelqu'un a-t-il une idée, là je suis perdu après quelques heures de débug.

    Merci

  2. #2
    Responsable Qt & Livres


    Avatar de dourouc05
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2008
    Messages
    26 772
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

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

    Informations forums :
    Inscription : Août 2008
    Messages : 26 772
    Par défaut


    Citation Envoyé par globule22 Voir le message
    Par contre une fois le formulaire soumis, normalement je suis censé tombé sur la route homepage, mais j'obtiens une belle erreur 500.
    Il est rare que PHP te lâche simplement une erreur sans rien en dire d'autre ; affiche les erreurs (php_flag display_errors 1 dans le .htaccess) et donne-nous ce qu'affiche dans ce cas le contrôleur debug.
    Vous souhaitez participer aux rubriques Qt (tutoriels, FAQ, traductions) ou HPC ? Contactez-moi par MP.

    Créer des applications graphiques en Python avec PyQt5
    Créer des applications avec Qt 5.

    Pas de question d'ordre technique par MP !

  3. #3
    Membre régulier
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2011
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 11
    Par défaut
    Il est déjà activé c'est ça qui est chiant pour débuger. Je n'ai pas accès même en lecture au log apache en ssh sur le serveur.

  4. #4
    Expert confirmé
    Avatar de Michel Rotta
    Homme Profil pro
    DPO
    Inscrit en
    Septembre 2005
    Messages
    4 954
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    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
    Par défaut
    Tu as essayé en mode débug ?

    Tu peux utiliser symfony pour parsemer ton code de code de log et récupérer cela dans les logs symfony.

    Tu peux aussi le parsemer de die() et autre echo pour savoir où il passe, mais c'est plus lourd sur ce type de serveur.

    Eventuellement, essaye de te monter une machine virtuel en local avec un debian et un serveur xamp pour voir si l'erreur est reproductible.

    Il faut se méfier d'un site développé sous windows et exécuté sous linux, la gestion des majuscules et minuscules n'est pas la même, là où windows est tolérant, linux est extrémiste. Si tu as des liens coucou/Durant/vErt sous windows qui pointent vers la structure coucou/durant/vert ils passeront. Sous linux il planteront. Vérifies. Et vérifies que le transfert par FTP ne t'ai pas rajouté de majuscules intempestives en début de nom de fichier.

  5. #5
    Membre régulier
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2011
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 11
    Par défaut
    Je suis sous Mac.

    Voilà les logs que j'obtiens en lançant une connection à l'admin:

    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
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    Apr 07 09:06:08 symfony [info] {sfPatternRouting} Connect sfRoute "sf_guard_signin" (/guard/login)
    Apr 07 09:06:08 symfony [info] {sfPatternRouting} Connect sfRoute "sf_guard_signout" (/guard/logout)
    Apr 07 09:06:08 symfony [info] {sfPatternRouting} Connect sfDoctrineRoute "sf_guard_user_filter" (/guard/users/filter.:sf_format)
    Apr 07 09:06:08 symfony [info] {sfPatternRouting} Connect sfDoctrineRoute "sf_guard_user_batch" (/guard/users/batch.:sf_format)
    Apr 07 09:06:08 symfony [info] {sfPatternRouting} Connect sfDoctrineRoute "sf_guard_user" (/guard/users.:sf_format)
    Apr 07 09:06:08 symfony [info] {sfPatternRouting} Connect sfDoctrineRoute "sf_guard_user_new" (/guard/users/new.:sf_format)
    Apr 07 09:06:08 symfony [info] {sfPatternRouting} Connect sfDoctrineRoute "sf_guard_user_create" (/guard/users.:sf_format)
    Apr 07 09:06:08 symfony [info] {sfPatternRouting} Connect sfDoctrineRoute "sf_guard_user_edit" (/guard/users/:id/edit.:sf_format)
    Apr 07 09:06:08 symfony [info] {sfPatternRouting} Connect sfDoctrineRoute "sf_guard_user_update" (/guard/users/:id.:sf_format)
    Apr 07 09:06:08 symfony [info] {sfPatternRouting} Connect sfDoctrineRoute "sf_guard_user_delete" (/guard/users/:id.:sf_format)
    Apr 07 09:06:08 symfony [info] {sfPatternRouting} Connect sfDoctrineRoute "sf_guard_user_show" (/guard/users/:id.:sf_format)
    Apr 07 09:06:08 symfony [info] {sfPatternRouting} Connect sfDoctrineRoute "sf_guard_user_object" (/guard/users/:id/:action.:sf_format)
    Apr 07 09:06:08 symfony [info] {sfPatternRouting} Connect sfDoctrineRoute "sf_guard_user_collection" (/guard/users/:action/action.:sf_format)
    Apr 07 09:06:08 symfony [info] {sfPatternRouting} Connect sfDoctrineRoute "sf_guard_group_filter" (/guard/groups/filter.:sf_format)
    Apr 07 09:06:08 symfony [info] {sfPatternRouting} Connect sfDoctrineRoute "sf_guard_group_batch" (/guard/groups/batch.:sf_format)
    Apr 07 09:06:08 symfony [info] {sfPatternRouting} Connect sfDoctrineRoute "sf_guard_group" (/guard/groups.:sf_format)
    Apr 07 09:06:08 symfony [info] {sfPatternRouting} Connect sfDoctrineRoute "sf_guard_group_new" (/guard/groups/new.:sf_format)
    Apr 07 09:06:08 symfony [info] {sfPatternRouting} Connect sfDoctrineRoute "sf_guard_group_create" (/guard/groups.:sf_format)
    Apr 07 09:06:08 symfony [info] {sfPatternRouting} Connect sfDoctrineRoute "sf_guard_group_edit" (/guard/groups/:id/edit.:sf_format)
    Apr 07 09:06:08 symfony [info] {sfPatternRouting} Connect sfDoctrineRoute "sf_guard_group_update" (/guard/groups/:id.:sf_format)
    Apr 07 09:06:08 symfony [info] {sfPatternRouting} Connect sfDoctrineRoute "sf_guard_group_delete" (/guard/groups/:id.:sf_format)
    Apr 07 09:06:08 symfony [info] {sfPatternRouting} Connect sfDoctrineRoute "sf_guard_group_show" (/guard/groups/:id.:sf_format)
    Apr 07 09:06:08 symfony [info] {sfPatternRouting} Connect sfDoctrineRoute "sf_guard_group_object" (/guard/groups/:id/:action.:sf_format)
    Apr 07 09:06:08 symfony [info] {sfPatternRouting} Connect sfDoctrineRoute "sf_guard_group_collection" (/guard/groups/:action/action.:sf_format)
    Apr 07 09:06:08 symfony [info] {sfPatternRouting} Connect sfDoctrineRoute "sf_guard_permission_filter" (/guard/permissions/filter.:sf_format)
    Apr 07 09:06:08 symfony [info] {sfPatternRouting} Connect sfDoctrineRoute "sf_guard_permission_batch" (/guard/permissions/batch.:sf_format)
    Apr 07 09:06:08 symfony [info] {sfPatternRouting} Connect sfDoctrineRoute "sf_guard_permission" (/guard/permissions.:sf_format)
    Apr 07 09:06:08 symfony [info] {sfPatternRouting} Connect sfDoctrineRoute "sf_guard_permission_new" (/guard/permissions/new.:sf_format)
    Apr 07 09:06:08 symfony [info] {sfPatternRouting} Connect sfDoctrineRoute "sf_guard_permission_create" (/guard/permissions.:sf_format)
    Apr 07 09:06:08 symfony [info] {sfPatternRouting} Connect sfDoctrineRoute "sf_guard_permission_edit" (/guard/permissions/:id/edit.:sf_format)
    Apr 07 09:06:08 symfony [info] {sfPatternRouting} Connect sfDoctrineRoute "sf_guard_permission_update" (/guard/permissions/:id.:sf_format)
    Apr 07 09:06:08 symfony [info] {sfPatternRouting} Connect sfDoctrineRoute "sf_guard_permission_delete" (/guard/permissions/:id.:sf_format)
    Apr 07 09:06:08 symfony [info] {sfPatternRouting} Connect sfDoctrineRoute "sf_guard_permission_show" (/guard/permissions/:id.:sf_format)
    Apr 07 09:06:08 symfony [info] {sfPatternRouting} Connect sfDoctrineRoute "sf_guard_permission_object" (/guard/permissions/:id/:action.:sf_format)
    Apr 07 09:06:08 symfony [info] {sfPatternRouting} Connect sfDoctrineRoute "sf_guard_permission_collection" (/guard/permissions/:action/action.:sf_format)
    Apr 07 09:06:08 symfony [info] {sfPatternRouting} Match route "sf_guard_signin" (/guard/login) for /guard/login with parameters array (  'module' => 'sfGuardAuth',  'action' => 'signin',)
    Apr 07 09:06:08 symfony [info] {sfFilterChain} Executing filter "sfRenderingFilter"
    Apr 07 09:06:08 symfony [info] {sfFilterChain} Executing filter "sfExecutionFilter"
    Apr 07 09:06:08 symfony [info] {sfGuardAuthActions} Call "sfGuardAuthActions->executeSignin()"
    Apr 07 09:06:08 symfony [info] {Doctrine_Connection_Mysql} exec : SET NAMES 'utf8' - ()
    Apr 07 09:06:08 symfony [info] {Doctrine_Connection_Statement} execute : SELECT s.id AS s__id, s.first_name AS s__first_name, s.last_name AS s__last_name, s.email_address AS s__email_address, s.username AS s__username, s.algorithm AS s__algorithm, s.salt AS s__salt, s.password AS s__password, s.is_active AS s__is_active, s.is_super_admin AS s__is_super_admin, s.last_login AS s__last_login, s.created_at AS s__created_at, s.updated_at AS s__updated_at FROM sf_guard_user s WHERE (s.username = ? AND s.is_active = ?) - (admin, 1)
    Apr 07 09:06:08 symfony [info] {myUser} User is authenticated
    Apr 07 09:06:08 symfony [info] {Doctrine_Connection_Statement} execute : SELECT s.id AS s__id, s.name AS s__name, s.description AS s__description, s.created_at AS s__created_at, s.updated_at AS s__updated_at, s2.user_id AS s2__user_id, s2.permission_id AS s2__permission_id, s2.created_at AS s2__created_at, s2.updated_at AS s2__updated_at FROM sf_guard_permission s LEFT JOIN sf_guard_user_permission s2 ON s.id = s2.permission_id WHERE (s2.user_id IN (?)) - (1)
    Apr 07 09:06:08 symfony [info] {Doctrine_Connection_Statement} execute : SELECT s.id AS s__id, s.name AS s__name, s.description AS s__description, s.created_at AS s__created_at, s.updated_at AS s__updated_at, s2.user_id AS s2__user_id, s2.group_id AS s2__group_id, s2.created_at AS s2__created_at, s2.updated_at AS s2__updated_at FROM sf_guard_group s LEFT JOIN sf_guard_user_group s2 ON s.id = s2.group_id WHERE (s2.user_id IN (?)) - (1)
    Apr 07 09:06:08 symfony [info] {Doctrine_Connection_Statement} execute : SELECT s.id AS s__id, s.name AS s__name, s.description AS s__description, s.created_at AS s__created_at, s.updated_at AS s__updated_at, s2.group_id AS s2__group_id, s2.permission_id AS s2__permission_id, s2.created_at AS s2__created_at, s2.updated_at AS s2__updated_at FROM sf_guard_permission s LEFT JOIN sf_guard_group_permission s2 ON s.id = s2.permission_id WHERE (s2.group_id IN (?)) - (1)
    Apr 07 09:06:08 symfony [info] {myUser} Add credential(s) "admin"
    Apr 07 09:06:08 symfony [info] {Doctrine_Connection_Statement} execute : UPDATE sf_guard_user SET last_login = ?, updated_at = ? WHERE id = ? - (2011-04-07 09:06:08, 2011-04-07 09:06:08, 1)
    Apr 07 09:06:08 symfony [info] {Doctrine_Connection_Statement} execute : SELECT s.id AS s__id, s.first_name AS s__first_name, s.last_name AS s__last_name, s.email_address AS s__email_address, s.username AS s__username, s.algorithm AS s__algorithm, s.salt AS s__salt, s.password AS s__password, s.is_active AS s__is_active, s.is_super_admin AS s__is_super_admin, s.last_login AS s__last_login, s.created_at AS s__created_at, s.updated_at AS s__updated_at FROM sf_guard_user s WHERE (s.id = ?) - (1)
    Apr 07 09:06:08 symfony [info] {sfFrontWebController} Redirect to "http://abo.travail.lemensuel.com/admin/"
    Apr 07 09:06:08 symfony [info] {sfWebResponse} Send status "HTTP/1.1 302 Found"
    Apr 07 09:06:08 symfony [info] {sfWebResponse} Send header "Location: http://abo.travail.lemensuel.com/admin/"
    Apr 07 09:06:08 symfony [info] {sfWebResponse} Send header "Content-Type: text/html; charset=utf-8"
    Apr 07 09:06:08 symfony [info] {sfWebDebugLogger} Configuration 0.97 ms (8)
    Apr 07 09:06:08 symfony [info] {sfWebDebugLogger} Factories 38.66 ms (1)
    Apr 07 09:06:08 symfony [info] {sfWebDebugLogger} Action "sfGuardAuth/signin" 61.77 ms (1)
    Apr 07 09:06:08 symfony [info] {sfWebDebugLogger} Database (Doctrine) 0.01 ms (7)
    Apr 07 09:06:08 symfony [info] {sfWebResponse} Send content (110 o)
    Donc le sfguard fonctionne bien, j'ai bien une authentification. Dans la lib de sfguard: plugins/sfdoctrineguardplugin/modules/sfguardauth/lib/BasesfGuardAuthActions.class il redirige ensuite après authentification vers la route homepage

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    homepage:
      url:   /admin/
      param: { module: sfAdminDash, action: dashboard }
    Je viens de tester en local, le code suivant plante:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    homepage:
      url:   /admin
      param: { module: sfAdminDash, action: dashboard }
    ça viendrait surement de là, mais je comprends pk entre mon local et en ligne ça merdouille ?

  6. #6
    Expert confirmé
    Avatar de Michel Rotta
    Homme Profil pro
    DPO
    Inscrit en
    Septembre 2005
    Messages
    4 954
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    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
    Par défaut
    Arrive-t-il dans ton contrôleur ?

    Quid si tu mets un code de débug (die() ) dans ton contrôleur (executeDashboard) ?

    Que donne l'exécution en mode débug sur le serveur ?

Discussions similaires

  1. Redirection nom de domaine vers backend.php?
    Par ricardvince dans le forum Apache
    Réponses: 2
    Dernier message: 20/05/2008, 14h42
  2. [FLASH MX2004] Variable php vers flash
    Par Rhadamanthe59 dans le forum Flash
    Réponses: 8
    Dernier message: 01/03/2006, 22h14
  3. Réponses: 2
    Dernier message: 08/01/2006, 20h50
  4. Réponses: 7
    Dernier message: 01/12/2005, 15h30
  5. [FLASH 8] php vers flash
    Par molesqualeux dans le forum Flash
    Réponses: 2
    Dernier message: 18/11/2005, 16h03

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