有时在我的网站(ZendFramework2)上,设置会话变量时出错。 错误:
PHP Fatal error: Uncaught exception 'Zend\\Stdlib\\Exception\\InvalidArgumentException' with message 'The iterator class does not exist' in /MySite/vendor/zendframework/zendframework/library/Zend/Stdlib/ArrayObject/PhpReferenceCompatibility.php:374
Stack trace:
#0 /MySite/vendor/zendframework/zendframework/library/Zend/Stdlib/ArrayObject/PhpReferenceCompatibility.php(414): Zend\\Stdlib\\ArrayObject\\PhpReferenceCompatibility->setIteratorClass(NULL)
#1 [internal function]: Zend\\Stdlib\\ArrayObject\\PhpReferenceCompatibility->unserialize('a:4:{s:7:"stora...')
#2 /MySite/vendor/zendframework/zendframework/library/Zend/Session/SessionManager.php(95): session_start()
#3 /MySite/vendor/zendframework/zendframework/library/Zend/Session/AbstractContainer.php(78): Zend\\Session\\SessionManager->start()
#4 /MySite/module/Application/Module.php(97): Zend\\Session\\AbstractContainer->__construct('site')
#5 [internal function]: Application\\Module->onBootstrap(Object(Zend\\Mvc\\MvcEvent))
#6 /MySite/vendor/zendframework/zendframework/library/Zend/Stdlib/ArrayObject/PhpReferenceCompatibility.php on line 374
Code Module.php第97行:
$s_site = new \Zend\Session\Container('site');
我尝试但我找不到原因。你有什么主意吗?需要更多信息? 谢谢。
答案 0 :(得分:0)
这是ArrayObject / PhpReferenceCompatibility中的setIteratorClass方法传递null $ class参数的结果。我不确定为什么它有时会变为空,但我在我的情况下修复它的方法是将迭代器类设置为' ArrayIterator'传递一个null对象时,如下所示:
if (!isset($class)) {
$class = 'ArrayIterator';
}
答案 1 :(得分:0)
在最新的zf2版本中,ArrayObject/PhpReferenceCompatibility
类已被删除,因此请在stdlib/ArrayObject.php
中进行更改。