web-dev-qa-db-fra.com

Déploiement de l'application Symfony2 en obtenant des erreurs fosuserbundle

J'ai installé mon projet Symfony sur un autre ordinateur avec les mêmes spécifications et le message d'erreur suivant s'affiche lorsque je me connecte à fosuserbundle: 

Authentication request could not be processed due to a system problem.

Je ne trouve rien d'intéressant dans les fichiers app/logs. Je lance l'application en mode dev. Effacez le cache à la fois manuellement et à partir de la console. J'ai configuré la base de données avec doctrine: database: create. Cela fonctionne pour créer un nouvel utilisateur avec fos:user:create et il a été enregistré avec succès dans la base de données.

Je ne sais pas ou aller d'ici.

14
estrar

Vérifiez que votre base de données est à jour. Cela a résolu mon problème lorsque j'ai reçu cette erreur.

php app/console doctrine:schema:update --dump-sql

edit: orthographe

26
J-who

Avait le même problème tout en travaillant dans l'environnement de dev. J'ai mis à jour le modèle de mon utilisateur et chaque fois que j'essayais de me connecter j'avais l'erreur. Résolu en exécutant:

app/console cache:clear

EDIT: eu le même problème à nouveau. Cette fois, c'est parce que j'ai déplacé mon projet sur un autre serveur et que j'ai oublié de mettre à jour parameters.yml pour qu'il corresponde aux informations d'identification MySQL du serveur.

5
Bob

On dirait que l'erreur:

La demande d'authentification n'a pas pu être traitée en raison d'un problème système.

est trop générique et ne dit pas où est le problème (un problème a été ouvert à ce sujet ici ).

J'ai résolu mon problème en consultant les journaux et voir ce qui s'est passé (dans var/logs/dev.log), en espérant que cela aide quelqu'un.

Dans mon cas spécifique, il y avait un mauvais paramètre dans parameters.yml concernant la base de données.

2
Francesco Borzi

Vous avez peut-être défini un mot de passe incorrect dans votre parameters.yml pour lequel il pourrait ne pas être en mesure de se connecter à la base de données . L'erreur susmentionnée se produit lorsque l'application ne peut pas se connecter à la base de données pour vérifier si l'utilisateur est authentique. (J'ai aussi fait face à la même erreur et c'était mon problème, espérons que cela aide)

1
Ansuraj Khadanga

Dans un processus de déploiement, il s'agit généralement d'un problème d'environnement (en supposant que l'application fonctionne correctement dans un poste de développeur). FOSUserBundle c'est génial, mais pour une raison quelconque, il ne montre pas très bien les problèmes qui se cachent derrière.

Comme le message d'erreur le dit: ".. n'a pas pu être traité en raison d'un problème système"

si le nettoyage du cache et la mise à jour du schéma fonctionnent, je vous recommande d'essayer de contourner FOSUserBundle (généralement, le problème concerne votre code/configuration et l'environnement du serveur) et de laisser votre groupe avec le gestionnaire d'erreurs et le consignateur par défaut vous informer de tout problème.

dans mon cas c'était un problème de conducteur. (installer pdo)

pour le contourner, le moyen le plus simple consiste à supprimer la sécurité de l’action controller_action dans security.yml.

access_control:
{ path: ^/SomeCRUD, role: IS_AUTHENTICATED_ANONYMOUSLY }

ensuite, si vous y accédez, il devrait pouvoir enregistrer le problème et vous devriez pouvoir le résoudre.

j'espère que ça aide

1
Jonos

J'ai eu le problème Symfony 2.3 et quand j'exécute la doctrine app/console: schema: update --dump-sql c'est le résultat.

DROP INDEX UNIQ_957A647992FC23A8 ON fos_user; DROP INDEX UNIQ_957A6479A0D96FBF SUR fos_user; , DROP expires_at, DROP confirmation_token, DROP password_requested_at, rôles DROP, DROP credentials_expired, DROP credentials_expire_at;

Il a recommencé à fonctionner juste après avoir mis à jour doctrine-bundle de 1.2 à 1.3.

Info:

https://github.com/FriendsOfSymfony/FOSUserBundle/issues/2140

0
maccevedor

Assurez-vous que votre entité utilisateur implémente le UserInterface

<?php

namespace UserBundle\Entity;

use Doctrine\ORM\Mapping as ORM;
use Symfony\Component\Security\Core\User\UserInterface;

/**
 * BaseUser
 */
class BaseUser implements UserInterface
{
    /**
     * @var integer
     */
    protected $id;

    /**
     * @var string
     */
    protected $name;

    /**
     * @var string
     */
    protected $username;

    /**
     * @var string
     */
    protected $password;

    /**
     * @var string
     */ 
    protected $email;

    /**
     * @var string
     * 
     */
    protected $roles;

    /**
     * @var boolean
     */
    protected $isActive;


    /**
     * Get id
     *
     * @return integer 
     */
    public function getId()
    {
        return $this->id;
    }

    /**
     * Set name
     *
     * @param string $name
     * @return BaseUser
     */
    public function setName($name)
    {
        $this->name = $name;

        return $this;
    }

    /**
     * Get name
     *
     * @return string 
     */
    public function getName()
    {
        return $this->name;
    }

    /**
     * Set username
     *
     * @param string $username
     * @return BaseUser
     */
    public function setUsername($username)
    {
        $this->username = $username;

        return $this;
    }

    /**
     * Get username
     *
     * @return string 
     */
    public function getUsername()
    {
        return $this->username;
    }

    /**
     * Set password
     *
     * @param string $password
     * @return BaseUser
     */
    public function setPassword($password)
    {
        if (!is_null($password)) {
            $this->password = $password;
        }

        return $this;
    }

    /**
     * Get password
     *
     * @return string 
     */
    public function getPassword()
    {
        return $this->password;
    }

    /**
     * Set email
     *
     * @param string $email
     * @return BaseUser
     */
    public function setEmail($email)
    {
        $this->email = $email;

        return $this;
    }

    /**
     * Get email
     *
     * @return string 
     */
    public function getEmail()
    {
        return $this->email;
    }

    /**
     * Set roles
     *
     * 
     * @return BaseUser
     */
    public function setRoles($roles)
    {
        $this->roles = $roles;
    }

    /**
     * Get roles
     */
    public function getRoles()
    {
        // Do what ever make sense to you here 
        return explode("|", $this->roles)
    }

    /**
     * Set isActive
     *
     * @param boolean $isActive
     * @return BaseUser
     */
    public function setIsActive($isActive)
    {
        $this->isActive = $isActive;

        return $this;
    }

    /**
     * Get isActive
     *
     * @return boolean 
     */
    public function getIsActive()
    {
        return $this->isActive;
    }

    public function eraseCredentials()
    {
    }

    public function getSalt()
    {
        return null;
    }
}
0
Nezar Fadle

J'avais exactement le même problème. Et les étapes que j'ai prises étaient les suivantes:

  1. J'ai effacé la cache
  2. J'ai ramené toutes mes tables de base de données et les ai recréées via mes migrations
  3. J'ai remplacé l'endroit où j'avais utilisé des guillemets simples (') avec des guillemets doubles (") dans mes annotations d'entité pour les arguments des méthodes de contrainte

    Exemple

    //src/SomeBundle/Model/user.php
    <?php
    /**
    *
    * @Assert\File(
    *  maxSize='512k',
    *  mimeTypes={'image/png', 'image/jpeg', 'image/gif'},
    *  mimeTypesMessage= 'Please upload a valid png, gif or jpeg file below 512Kb'
    * )
    */
    private $profilePic;
    
    ?>
    

    Cela a été remplacé par

    <?php
    /**
    *
    * @Assert\File(
    *  maxSize="512k",
    *  mimeTypes={"image/png", "image/jpeg", "image/gif"},
    *  mimeTypesMessage= "Please upload a valid png, gif or jpeg file below 512Kb"
    * )
    */
    private $profilePic;
    ?>
    

Après cela, j'ai essayé à nouveau l'authentification et cela a fonctionné!

0
king

Si vous avez généré la base de données à l'aide de doctrine: database: create, votre jeu de caractères n'est peut-être pas approprié. Parce que la table utilisateur a un champ sérialisé (rôles), un encodage incorrect peut en être la cause.

Vous pouvez vérifier cela en regardant dans app/logs et votre classement de base de données.

Vous pouvez également vérifier cette réponse

0
ncastro

J'ai eu le même problème. J'ai pu construire et peupler la base de données avec php app/console doctrine:schema:update --force; php app/console doctrine:fixtures:load;, mais l'application symfony n'a pas pu accéder à la base de données.

Le problème était que je mettrais database_Host: 127.0.0.1 dans parameters.yml mais mysql s'attendait à ce que je me connecte via localhost. La mise à jour de parameters.yml a résolu le problème. Je ne comprends toujours pas pourquoi les commandes en ligne de commande ont fonctionné ...

0
jxmallett