类 __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)

类加载机制的学习1______类加载器

java 类的类型修饰符包含了缺省、_________________及_________________三种,分别对应具体类、抽象类和最

python限定类属性的类属性:__slots__