PHP 5.3中不存在ReflectionClass - 蓝宝石崩溃

时间:2013-12-20 15:04:53

标签: php silverstripe

我们已经工作了6年的网站昨天刚刚开始崩溃。激活错误,我发现蓝宝石有错误。

enter image description here

该类应该存在于PHP 5.3中。而且,错误说它没有。

以下是创建错误的代码(来自Sapphire核心文件,不想修改它。)

enter image description here

所以问题是,我的主机可以从PHP中停用该类吗?我该怎么做才能解决错误?我无法真正更新蓝宝石,因为它在CMS(Silverstripe版本2.4.5)中使用,并且不会冒更新Silverstripe的风险(该网站已知不稳定)。

更新:

只是认为ReflectionClass确实存在(它从ReflectionClass中抛出一个错误)所以它是$ class变量,而不是ReflectionClass所期望的。

更新2:

$ class的Var_dump给出了

string(22) "GoogleSitemapDecorator" string(9) "Hierarchy" NULL NULL 
$ args的var_dump给出了

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) }

2 个答案:

答案 0 :(得分:1)

错误消息显示它(尚未)捕获 ReflectionException ,这意味着它是ReflectionClass类抛出的异常。此异常的消息是“类不存在”。堆栈跟踪显示您正在调用

ReflectionClass->__construct('')

意味着您将''作为参数传递给new ReflectionClass。当然,类''可能确实不存在。

换句话说,$class包含错误的值。

答案 1 :(得分:0)

这是多年前的问题。但是,为了提醒那些自问相同问题的人,已知PHP 5.3中存在ReflexionClass。更重要的是,我最近用它开发了与PHP 5.3兼容的IoC / DI容器。

Fredy31的$class错误值。