类 __PHP_Incomplete_Class 没有反序列化器。

14

我正在尝试在PHPUnit中运行测试,并收到此错误。

致命错误:未捕获的异常'ErrorException',消息为“类__PHP_Incomplete_Class没有反序列化器”,位于/opt/lampp/lib/php/PHPUnit/Util/PHP.php的第237行

PHP - 5.4.7
PHPUnit - 3.7.21

PHPUnit设置:

processIsolation = "true"

谢谢您的提前帮助。


1
你试过谷歌搜索吗?https://www.google.co.uk/search?q=Class+__PHP_Incomplete_Class+has+no+unserializer 看起来这是PHPUnit和Symfony2特定的问题。 - Pudge601
可能与https://dev59.com/W23Xa4cB1Zd3GeqPgZiK#14514753有关。当使用将PDO连接放在其全局范围内的框架时,解决方案是将该变量添加到backupglobalblacklist中:http://phpunit.de/manual/3.7/en/fixtures.html#idp7165424 - qrazi
4个回答

11
尝试清除测试环境的缓存。php app/console cache:clear --env=test

谢谢,但它没有起作用,我知道原因,但我不确定,因为我没有任何解决方案。这个问题是由于PHP和PHPUNIT在处理“GLOBALS”时有所不同,我甚至尝试了这个选项(http://phpunit.de/manual/3.7/en/appendixes.annotations.html#appendixes.annotations.backupGlobals)。 - Infinity

10

这里有一个调试方案,可能会帮助您找到unserialize方法失败的位置:

<?php
ini_set('unserialize_callback_func', 'debug_unserialize');

function debug_unserialize($classname) 
{
    die(var_dump($classname));
}
那样你就能看到哪个类名导致了问题。

那样你就能看到哪个类名导致了问题。


有用的命令。然而,我的输出显示了一个不存在的类。你们有什么想法为什么会这样?我有一种感觉是由于composer或缓存出了问题,但我已经清除了两者并重新安装了composer包。 - Michael Millar

1

尝试在浏览器中打开您的网站,然后再次尝试执行测试。我相信它会起作用,似乎Php Unit和Symfony生成缓存的方式存在差异。


0

我有同样的问题

将Symfony更新到3.3.18版本对我有用!

希望能帮到你


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接