node - security symfony2
FOS UserBundle No se puede iniciar sesiĆ³n (5)
Compruebe su versión de PHP por "php -v" en la línea de comandos. Ej. PHP 5.6.10
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