2013-12-20 30 views
-1

我們已經工作了6年的網站昨天剛剛開始崩潰。激活錯誤,我發現藍寶石存在錯誤。ReflectionClass在PHP 5.3中不存在 - 藍寶石崩潰

enter image description here

那類應該在PHP 5.3存在。而且,錯誤表示它沒有。

這裏是產生錯誤的代碼(從藍寶核心文件,不想過修改。)

enter image description here

所以現在的問題是,我可以有主機從desactivated該類PHP?我能做些什麼來修復錯誤?我無法真正更新藍寶石,因爲它在CMS(銀條紋版本2.4.5)中使用,並且不會冒更新Silverstripe(該網站已知不穩定)的風險。

UPDATE:

就想通了ReflectionClass確實存在(它拋出我的錯誤從ReflectionClass),所以它的$類變量,是不是有什麼ReflectionClass期待。

更新2:

$類的

的var_dump給出了$

string(22) "GoogleSitemapDecorator" string(9) "Hierarchy" NULL NULL 

的var_dump ARGS給

array(1) { [0]=> string(22) "GoogleSitemapDecorator" } array(1) { [0]=> string(9) "Hierarchy" } array(2) { [0]=> NULL [1]=> float(0) } array(2) { [0]=> NULL [1]=> float(0) } 
+0

那麼,什麼是'var_dump($ class)'?什麼是'var_dump($ args);'? – h2ooooooo

+0

..所以我最後的問題是如果'GoogleSitemapDecorator'存在? – h2ooooooo

+0

它似乎存在。我測試了4個結果來自4個分開的函數調用。我可以在轉儲(我在文件的第87行)做出迴應後將它們分開。仍在搜索! – Fredy31

回答

1

錯誤消息說,它(沒有)抓了ReflectionException,這意味着這是ReflectionClass類拋出的異常。此例外的消息是「類不存在」。堆棧跟蹤顯示,我們在調用

ReflectionClass->__construct('') 

意味着你傳遞''作爲參數傳遞給new ReflectionClass。當然,類0123¾可能確實不存在。

換句話說,$class包含錯誤的值。

+0

如果我嘗試在$ reflector和它的返回(如果$ class ==「」)時放一個if,它會引發另一個錯誤。致命錯誤:__clone方法在/services/webpages/xxxxx/public/sapphire/core/Object.php上的非對象上調用143行 – Fredy31

0

這是很多年前問過的。但是,爲了提醒那些問自己同樣問題的人,已知在PHP 5.3中存在ReflexionClass。更重要的是,我最近使用它來開發與PHP 5.3兼容的IoC/DI容器。

Fredy31對於$class有錯誤的值。