FOS UserBundle Impossible de se connecter
Je suis de retour avec un autre problème concernant mon UserBundle :
Tout a été parfait lors de l'installation et de la configuration de FOS bundle par Symfony2, il m'a même pas laissé de créer 2 utilisateurs qui ont été correctement inséré dans ma DB.
Cependant, chaque fois que j'essaye d'ouvrir une session dans l'un de ces comptes, j'obtiens l'erreur suivante
Warning: Erroneous data format for unserializing 'VillaPrivee\UserBundle\Entity\User' in /Users/Vianney/Projets/VillaPrivee/vendor/doctrine/orm/lib/Doctrine/ORM/Mapping/ClassMetadataInfo.php line 869
C'est ce que la ligne 869 se réfère à :
/**
* Creates a new instance of the mapped class, without invoking the constructor.
*
* @return object
*/
public function newInstance()
{
if ($this->_prototype === null) {
$this->_prototype = unserialize(sprintf('O:%d:"%s":0:{}', strlen($this->name), $this->name));
}
return clone $this->_prototype;
}
Et c'est mon entité User :
namespace VillaPrivee\UserBundle\Entity;
use FOS\UserBundle\Model\User as BaseUser;
use Doctrine\ORM\Mapping as ORM;
/**
* @ORM\Entity
* @ORM\Table(name="fos_user")
*/
class User extends BaseUser
{
/**
* @ORM\Id
* @ORM\Column(type="integer")
* @ORM\GeneratedValue(strategy="AUTO")
*/
protected $id;
public function __construct()
{
parent::__construct();
//your own logic
}
}
Pas sûr de ce que j'ai fait de mal, puisque je viens d'installer le tout en suivant l'étape par étape, de la documentation...
Merci les gars pour votre aide
Vous devez vous connecter pour publier un commentaire.
Si vous utilisez la Version de PHP 5.4.29 ou 5.5.13
Dans: "/vendor/doctrine/orm/lib/Doctrine/ORM/Mapping/ClassMetadataInfo.php" fonction de recherche "newInstance" (autour de la Ligne 827) et de modifier comme suit jusqu'à ce que le Correctif est fusionné par la doctrine.
@Benji: merci pour l'astuce: https://github.com/symfony/symfony/issues/11056
PHP 5.6.7-1 (cli) (built: Mar 24 2015 12:30:15)
ici, j'ai essayé 1er avec cette suggestion doctrine-project.org/jira/browse/DDC-3120 avec pas de chance. changement de O en C rendements Chaîne vide et se plante dans de l'Utilisateur::unserialize() qui s'attend à ce tableau.PHP_VERSION_ID === 50609
pour PHP 5.6.9-0+deb8u150613
pour moi. Quel hacky fonction. Qui est à blâmer pour ce non-sens? 😀if (method_exists($this->reflClass, 'newInstanceWithoutConstructor'))
au lieu de versions comparsionif (PHP_VERSION_ID > 50513)
que de l'état de sorte que vous n'avez pas à ajouter tous les intermédiaires de la version de PHP que vous pouvez utiliser. (radical mais efficace)Pour répondre à ma propre question, j'ai trouvé une solution grâce à ce mec :
http://www.doctrine-project.org/jira/browse/DDC-3120
Il est de loin meilleur que moi quand il s'agit d'expliquer, mais c'est ce que j'ai maintenant, et il fonctionne comme un charme! 🙂
PHP 5.6.3
, mais je ne pense pas que ce serait résoudre le problème. Nous savons qu'en PHP quand un signe @ est précédé d'une expression, tous les messages d'erreur susceptibles d'être générées par cette expression sera ignoré. Voir php.net/manual/en/language.operators.errorcontrol.php@
est le mal. xDVérifier votre version de PHP par "php -v" sur la ligne de commande. E. g. PHP 5.6.10
Éditer le fichier /vendor/doctrine/orm/lib/Doctrine/ORM/Cartographie/ClassMetadataInfo.php::newInstance()
Ajouter votre PHP_VERSION_ID ici
C'est une solution temporaire, car nous n'avons pas modifier
vendor
répertoire.J'ai eu le même problème avec php 5.6.6 (en local avec mamp), ma solution est juste pour revenir à 5.4, puisque c'est la version que j'avais en cours d'exécution sur le Serveur de toute façon... mais certainement quelque chose à garder à l'esprit...
Ce code fonctionne pour moi,
YourApplicationName\vendor\doctrine\lib\Doctrine\ORM\Mapping\ClassMetadataInfo.php
je remplacez le code existant par le code ci-dessous