Zend_Session未被捕获的异常

时间:2010-07-09 11:56:17

标签: php zend-framework session

所以我在index.php中有这个:

Zend_Session::start();

然后我在init方法的一个控制器中执行:

if (false === isset($this->defaultNamespace->tree)) {
    $this->defaultNamespace->tree = array();
}

哪个仍然有效。但是在同一个控制器中我写了这个:

unset($this->defaultNamespace->tree); // I tried commenting this line
$this->defaultNamespace->tree = $this->tree;

我得到一个像这样的例外:

<br />
<b>Fatal error</b>:  Uncaught exception 'Zend_Session_Exception' with message 'Zend_Session::start() - D:\data\o\WebProjects\elearning\public\index.php(Line:22): Error #2 include() [&lt;a href='function.include'&gt;function.include&lt;/a&gt;]: Failed opening 'SlideQuestion.php' for inclusion (include_path='D:\data\o\WebProjects\elearning/../../library;D:\data\o\WebProjects\elearning/application/../library;.;C:\php\pear;D:\data\o\WebLib\ZendFramework\library;') Array' in D:\data\o\WebLib\ZendFramework\library\Zend\Session.php:493
Stack trace:
#0 D:\data\o\WebProjects\elearning\public\index.php(26): Zend_Session::start()
#1 {main}
  thrown in <b>D:\data\o\WebLib\ZendFramework\library\Zend\Session.php</b> on line <b>493</b><br />

$ this-&gt;树是一个属性,包含一个包含一些对象的数组。

2 个答案:

答案 0 :(得分:1)

好的,我想我已经解决了这个问题。

显然这是一个编码问题(因为最近经常出现这种情况......)。 Zend_Session可能只接受UTF-8编码数据。数组中的某些对象在其属性中包含Windows-1250字符串。

我只是使用foreach循环对象并将其更改为UTF-8:

foreach ($array as $obj) {
    foreach ($obj as $property => $value) {
        if (is_string($value)) {
            $obj->$property = iconv('Windows-1250', 'UTF-8', $value);
        }
    }
}

现在它运作正常。

使用非标准编码(UTF-8除外,通常是Windows-1250)编写的该国际化应用程序:P

答案 1 :(得分:-1)

无法包含文件SlideQuestion.php。 该库包含路径错误。

include_path='D:\data\o\WebProjects\elearning/../../library;

应该是

include_path='D:\data\o\WebProjects\elearning\..\..\library;