the symfony2 node must fosuser fos_user fos db_driver configured child symfony doctrine2 fosuserbundle

node - security symfony2



FOS UserBundle No se puede iniciar sesiĆ³n (5)

  1. Compruebe su versión de PHP por "php -v" en la línea de comandos. Ej. PHP 5.6.10

  2. Edite el archivo /vendor/doctrine/orm/lib/Doctrine/ORM/Mapping/ClassMetadataInfo.php::newInstance ()

Agregue su PHP_VERSION_ID aquí

if (PHP_VERSION_ID === 50610 ) { . }

Es una solución temporal, ya que no editamos el directorio de vendor .

Volví con otro problema relacionado con mi UserBundle: todo fue perfecto mientras instalaba y configuraba el paquete de FOS a través de Symfony2, incluso me permitió crear 2 usuarios que se insertaron correctamente en mi base de datos.

Sin embargo, cada vez que intento iniciar sesión en cualquiera de estas cuentas, aparece el siguiente error

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

Esto es a lo que se refiere la línea 869:

/** * 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; }

Y esta es mi entidad de usuario:

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 } }

No estoy seguro de lo que hice mal, ya que acabo de instalar todo siguiendo la documentación paso a paso ... Gracias muchachos por su ayuda


Este código funciona para mí, YourApplicationName/vendor/doctrine/lib/Doctrine/ORM/Mapping/ClassMetadataInfo.php

Reemplace el código existente con el código siguiente

If ($this->_prototype === null) { $this->_prototype = @unserialize(sprintf(''O:%d:"%s":0:{}'', strlen($this->name), $this->name)); if ($this->_prototype === false) { $this->_prototype = unserialize(sprintf(''C:%d:"%s":0:{}'', strlen($this->name), $this->name)); } }


Experimenté el mismo problema con php 5.6.6 (localmente con mamp), mi solución fue volver al 5.4, ya que esa es la versión que tenía ejecutada en el Servidor de todos modos ... pero sin duda algo a tener en cuenta ...


Respondiendo a mi propia pregunta, encontré una solución gracias a este tipo:

doctrine-project.org/jira/browse/DDC-3120

Él es mucho mejor que yo a la hora de explicarlo, pero esto es lo que tengo ahora, ¡y funciona como un encanto! :)

{ if ($this->_prototype === null) { $this->_prototype = @unserialize(sprintf(''O:%d:"%s":0:{}'', strlen($this->name), $this->name)); if ($this->_prototype === false) { $this->_prototype = @unserialize(sprintf(''C:%d:"%s":0:{}'', strlen($this->name), $this->name)); } } return clone $this->_prototype; }


Si está utilizando PHP Versión 5.4.29 o 5.5.13

En: " /vendor/doctrine/orm/lib/Doctrine/ORM/Mapping/ClassMetadataInfo.php " encuentre la función "newInstance" (alrededor de la línea 827) y edítela como se muestra hasta que la corrección se combine con la doctrina.

public function newInstance() { if ($this->_prototype === null) { // $this->_prototype = unserialize(sprintf(''O:%d:"%s":0:{}'', strlen($this->name), $this->name)); if (PHP_VERSION_ID === 50429 || PHP_VERSION_ID === 50513) { $this->_prototype = $this->reflClass->newInstanceWithoutConstructor(); } else { $this->_prototype = unserialize(sprintf(''O:%d:"%s":0:{}'', strlen($this->name), $this->name)); } } return clone $this->_prototype; }

@Benji: thx para la pista: https://github.com/symfony/symfony/issues/11056