【发布时间】:2011-06-02 07:10:47
【问题描述】:
由于我使用 PECL 为 PHP 安装了 APC,因此有时会出现以下错误:Cannot redeclare class xxx
xxx 不时更改。我可以禁用 APC,但 APC 可以极大地提高性能!是否有已知的错误或者我可以做其他事情来防止这些错误?我正在使用带有 PHP 5.2.4 的 Ubuntu 8.04 LTS。
编辑/更新(来自 cmets):
我使用 Zend Framework Autoloader,在启用 APC 之前从未发生过这些错误。片刻前我得到例如那个错误:Fatal error: require(): Cannot redeclare class zend_db_adapter_abstract in /paths/app/lib/Zend/Db/Select.php on line 27
【问题讨论】:
-
阅读整个错误信息。不要两次包含上述文件。使用
include_once。否则,将所有定义包装在if (!class_defined("xxx")) { -
除了只使用 include_once 之外,尝试重新构建应用程序以使用类自动加载,以便 PHP 仅在需要时包含文件。还要坚持常识性的事情,例如每个文件一个类等。
-
你说的xxx是什么意思? xxx 真的是你要加载的类吗?
-
我使用 Zend Framework Autoloader 并且在启用 APC 之前从未发生过这些错误。片刻前我得到例如那个错误:
Fatal error: require(): Cannot redeclare class zend_db_adapter_abstract in /paths/app/lib/Zend/Db/Select.php on line 27 -
您运行的是什么版本的 APC?