根据this PHP bug report,错误消息是由在if语句中嵌套一个类并使其静态声明引起的。
我只在一个地方宣布了一个类,但我用if:
保护它if (!class_exists('myClass', false)) {
class myClass{
(尝试做类似于C ++预处理器指令/条件包含的事情。)
这是为了防止多个编码器不正确地包含它的可能性(需要而不是require_once)。在这一点上,我唯一的另一种选择是注释掉if并搜索包含的应用程序,并将它们全部设为“require_once”。
那么,有没有其他人遇到过这个错误,除了将所有需求改为require_once之外,还有办法解决这个问题吗? (这个软件由多个编码器维护,因此我希望防止它失败。)
另外,我们安装APC的主要原因是IE 9及以下版本的文件上传进度支持。因此,如果我们可以保持启用这些部分,我们可以禁用任何导致此功能的功能(不确定是否可能。)
更新:显然重新保存文件没有效果。看起来它有一种“超时”。当错误发生时,我必须等待一段时间才能消失。
答案 0 :(得分:0)
这似乎可能是由autoloading类引起的,也包括类本身中的类依赖。
在我们升级到PHP 5.3之前,我们没有选择使用PHP的自动加载功能。因此,我们必须在类文件中包含类依赖项。 例如:
<?php
require "parent_class.php";
if (!class_exists('this_class')) {
class this_class extends parent_class {
当我们升级到PHP 5.3时,我们实现了类自动加载功能。这可能是“静态”和“动态”类声明(根据问题中的PHP Bug)发生的原因。 - 静态地在实际的类文件中声明,并在自动加载器中动态声明。
我完成了并删除了所有类依赖项的包含/需求。这解决了这个问题。