2014-04-08 3 views
-1

가끔 내 웹 사이트 (ZendFramework2)에서 세션 변수를 설정할 때 오류가 발생합니다. 오류 :Zf2 Session Container 정의에서 "반복기 클래스가 존재하지 않습니다"

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 

코드 Module.php 행 97 :

$s_site = new \Zend\Session\Container('site'); 

나는 시도하지만 난 그 이유를 찾을 수 없습니다. 너는 어떤 생각을 가지고 있니? 더 많은 정보가 필요하십니까? 감사합니다.

+0

어떻게 관련이 있는지 모르지만 v2.3에서'PhpReferenceCompatibility' 클래스가 삭제되었습니다. 아마도 최신 버전의 ZF2로 업데이트하고 문제가 여전히 존재하는지 확인하십시오. – Crisp

+0

ZendFramework 버전을 업데이트하려고했지만 앱을 오래 적응해야합니다. 나는 시간이 없다 .. 또 다른 생각? – ViSuaL

답변

0

이는 ArrayObject/PhpReferenceCompatibility의 setIteratorClass 메소드가 null $ class 인수로 전달 된 결과입니다. 나는 가끔 널을 얻는 이유는 모르겠지만, 이런 식으로, null 객체를 통과 할 때 나는 그것을 고정 방법은 내 경우에는 'ArrayIterator'로 반복자 클래스를 설정했다 : 최신에서

if (!isset($class)) { 
    $class = 'ArrayIterator'; 
} 
0

zf2 버전에서는 ArrayObject/PhpReferenceCompatibility 클래스가 삭제되었으므로 stdlib/ArrayObject.php에서 변경하십시오.

관련 문제