2010-07-09 120 views
1

所以我有这个在我的index.php:了Zend_Session未捕获的异常

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 /> 

的$这个 - >树是一种属性包含某些对象的数组。它。

回答

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

不能包含文件SlideQuestion.php。 该库包含路径错误。

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

应该

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

没有那是肯定没有问题。当我注释行$ this-> defaultNamespace-> tree = $ this-> tree;一切正常。我可以做var_dump($ this-> tree)并且一切正常。 – 2010-07-09 12:59:56