类 __PHP_Incomplete_Class 没有反序列化器
Posted
技术标签:
【中文标题】类 __PHP_Incomplete_Class 没有反序列化器【英文标题】:Class __PHP_Incomplete_Class has no unserializer 【发布时间】:2013-05-30 14:52:18 【问题描述】:我正在尝试在 phpUnit 中运行测试并收到此错误。
致命错误:未捕获的异常 'ErrorException' 带有消息 'Class __PHP_Incomplete_Class 在 /opt/lampp/lib/php/PHPUnit/Util/PHP.php:237 中没有反序列化器
PHP - 5.4.7
PHPUnit - 3.7.21
PHPUnit 设置:
processIsolation = "true"
提前致谢。
【问题讨论】:
你试过用谷歌搜索这个吗? google.co.uk/… 似乎是 PHPUnit 和 symfony2 特有的问题 ***.com/a/14514753/921154 可能是相关的。在使用将 PDO 连接置于其全局范围内的框架时,解决方案是将该变量添加到 backupglobalblacklist:phpunit.de/manual/3.7/en/fixtures.html#idp7165424 【参考方案1】:尝试在浏览器中打开您的网站,然后再次尝试执行测试。我相信它会起作用,似乎 Php Unit 和 Symfony 在缓存生成方面存在一些差异
【讨论】:
【参考方案2】:尝试清除测试环境的缓存。 php app/console cache:clear --env=test
【讨论】:
谢谢,但它不起作用,我知道原因,但我不确定,因为我没有任何解决方案。这个问题是由于“GLOBALS”在 PHP 和 PHPUNIT 中的处理方式不同,我什至尝试过这个选项(phpunit.de/manual/3.7/en/…)【参考方案3】:这是一个调试解决方案,可以帮助您找到反序列化方法失败的地方:
<?php
ini_set('unserialize_callback_func', 'debug_unserialize');
function debug_unserialize($classname)
die(var_dump($classname));
这样你会看到哪个类名导致了问题。
【讨论】:
有用的命令。但是,我的输出显示了一个不存在的类。关于为什么会这样的任何想法?我有一种感觉是因为作曲家或缓存出了问题,但我已经清除了这两个并重新安装了作曲家包【参考方案4】:我有同样的问题
将 symfony 更新到 symfony 3.3.18 对我有用!
希望对你有帮助
【讨论】:
以上是关于类 __PHP_Incomplete_Class 没有反序列化器的主要内容,如果未能解决你的问题,请参考以下文章
Wordpress 模板 - “可捕获的致命错误:__PHP_Incomplete_Class 类的对象无法转换为字符串”
为啥 Python 新式类中的 __new__ 不是类方法?
python中的__new__与__init__,新式类和经典类(2.x)
java 类的类型修饰符包含了缺省、_________________及_________________三种,分别对应具体类、抽象类和最