$ php app/console fos:user:promote
$ php app/console fos:user:create Please choose a username:admin Please choose an email:admin21@dwq Please choose a password:admin123 Created user admin $ php app/console fos:user:promote Please choose a username:admin Please choose a role:ROLE_SUPER_ADMIN PHP Warning: Erroneous data format for unserializing 'Workshop\Bundle\BackendBundle\Entity\User' in E:\_My_File_____\_work\MyCode\myCode\phpworkspace \symfony-workshop\vendor\doctrine\orm\lib\Doctrine\ORM\Mapping\ClassMetadataInfo.php on line 833 PHP Notice: unserialize(): Error at offset 52 of 53 bytes in E:\_My_File_____\_work\MyCode\myCode\phpworkspace\symfony-workshop\ve ndor\doctrine\orm\lib\Doctrine\ORM\Mapping\ClassMetadataInfo.php on line 833 PHP Fatal error: Uncaught Error: __clone method called on non-object in E:\_My_File_____\_work\MyCode\myCode\phpworkspace\symfony- workshop\vendor\doctrine\orm\lib\Doctrine\ORM\Mapping\ClassMetadataInfo.php:837 Stack trace: #0 E:\_My_File_____\_work\MyCode\myCode\phpworkspace\symfony-workshop\vendor\doctrine\orm\lib\Doctrine\ORM\UnitOfWork.php(2393): Do ctrine\ORM\Mapping\ClassMetadataInfo->newInstance() #1 E:\_My_File_____\_work\MyCode\myCode\phpworkspace\symfony-workshop\vendor\doctrine\orm\lib\Doctrine\ORM\UnitOfWork.php(2474): Do ctrine\ORM\UnitOfWork->newInstance(Object(Doctrine\ORM\Mapping\ClassMetadata)) #2 E:\_My_File_____\_work\MyCode\myCode\phpworkspace\symfony-workshop\vendor\doctrine\orm\lib\Doctrine\ORM\Internal\Hydration\Simpl eObjectHydrator.php(135): Doctrine\ORM\UnitOfWork->createEntity('Workshop\\Bundle...', Array, Array) #3 E:\_My_File_____\_work\MyCode\myCode\phpworkspace\symfony-workshop\vendor\doctrine\orm\lib\Doct in E:\_My_File_____\_work\MyCode \myCode\phpworkspace\symfony-workshop\vendor\doctrine\orm\lib\Doctrine\ORM\Mapping\ClassMetadataInfo.php on line 837
为什么会出现这个错误呢
原因就是你本机器上的php版本与你的doctrine Bundle版本有些问题;
找到你报错的行数
ve ndor\doctrine\orm\lib\Doctrine\ORM\Mapping\ClassMetadataInfo.php on line 833
那么如果你和我的代码一样是这段
public function newInstance() { if ($this->_prototype === null) { 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; }
那么直接替换:
public function newInstance() { // echo PHP_VERSION_ID; die(); // Uncomment this, in case you don't know your PHP_VERSION_ID if ($this->_prototype === null) { if (PHP_VERSION_ID === 50429 || PHP_VERSION_ID === 50609||PHP_VERSION_ID === 50629||PHP_VERSION_ID === 50513 || PHP_VERSION_ID === 50603 || PHP_VERSION_ID === 70009) { // This is the tricky line $this->_prototype = $this->reflClass->newInstanceWithoutConstructor(); } else { $this->_prototype = unserialize(sprintf('O:%d:"%s":0:{}', strlen($this->name), $this->name)); } } return clone $this->_prototype; }
其中PHP_VERSION_ID === 50429就是php版本号;
50429就是5.4.29,我的事5.6.29那么就是50629
如果有兴趣一起讨论php_Symfony的话还可以加群一起学习:
QQ群:182983780
参考以下是博客问题解决
http://stackoverflow.com/questions/24031048/fos-userbundle-unable-to-login
http://stackoverflow.com/questions/24596813/symfony2-contexterrorexception-on-production-server-erroneous-data-format-for
https://github.com/symfony/symfony/issues/11056
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了