2012-11-10 37 views
3

我正在使用Zend Server CE在Windows 7(64位)系統上。致命錯誤:在Zend Server CE更新後未找到DOMDocument

我正在開發一個Zend Framework 2.0的網站。在本網站中,我使用DOMDocument來分析外部網站(由URL給出)。

我用Zend Framework 1.12和Zend Server CE 4(PHP 5.2)開始了這個項目。現在我安裝了Zend Server CE 5.6.0(apache2.2,PHP 5.3.14,ZF2-Support)。我使用ZF2.0重建了我的項目。一切正常......除了一個功能。

我得到這個錯誤 - 消息(PHP-error.log中),當我嘗試實例化DOM文檔:

Fatal error: Class 'Application\Controller\DOMDocument' not found in 
_Path_\module\Application\src\Application\Controller\SearchbarController.php on line 81 

隨着PHP 5.2(ZF 1.12)和Zend服務器CE 4時,此功能非常完美。但是現在......沒有任何改變,它會拋出這個錯誤。

dom-extension和xml-extension在PHP 5.3中內置。我檢查了phpinfo和我的php.ini,這些擴展正在運行。

我讀過,我應該安裝php-xml。但是dom,xml和libxml正在運行...爲什麼我應該重新安裝它們?

我不知道,爲什麼在升級Zend Server CE後無法實例化DOMDocument。可能是,ZF2.0是這個錯誤的一個可能的原因。但我找不到任何指向此的東西。

+0

如果使用'$ dom = new \ DOMDocument(...)'實例化對象,它會被修復嗎? – raina77ow

+0

是的!這解決了我的問題.....但是爲什麼? 非常感謝! –

+0

不客氣。 ) – raina77ow

回答

4

簡而言之,它引入了導致此錯誤的命名空間(ZF2使用相當多的PHP 5.3功能 - 但不是ZF 1.x)。用這條線......

$dom = new DOMDocument(...) 

...只有當前導入的命名空間由ZF檢查這個類。它導致失敗,因爲DOMDocument類實際上屬於全局命名空間。

解決方法很簡單,當您看到原因時:在類名前使用global namespace specifier-\符號。像這樣:

$dom = new \DOMDocument(...) 
相關問題