无法重新声明 class Magento

Cannot redeclare class Magento

我有一个有趣的问题。我网站的前端加载正常,但是当我尝试导航到:

域名.com/index.php/admin

我得到一个白页。我已启用调试模式,但它显示此错误:

Array ( [type] => 64 [message] => Cannot redeclare class Mage_Admin_Model_Session [file] => /var/www/vhosts/domain.co.uk/sub-domain.co.uk/includes/src/__adminhtml.php [line] => 504 )

自从发现这个新错误后,我尝试 comment/remove 每个 class 它不能在 __adminhtml.php 文件中重新声明的一个一个一个。当我将它们全部注释掉并刷新管理页面时,它没有给出任何错误。只是一个白页。

有什么想法吗?

这里有一些调试技巧,您可以尝试找出问题的原因。

此代码段将向您显示给定的 class 先前定义的位置:

$className = 'Foo';
if ( class_exists( $className ) ) {
  $rc = new ReflectionClass($className);
  print __FILE__.':'.__LINE__. ": Class $className already defined in " 
    . $rc->getFileName() . ":" . $rc->getStartLine();
}

你可以对函数做同样的事情;只需使用 function_existsReflectionFunction 即可。

某处文件似乎 included/required 两次。 如果 __adminhtml.php 文件被包含的频率太高,您可以添加对 debug_print_backtrace() 的调用以查看它是从哪里被包含的。

此外,如果您有自定义文件,您可以使用 require_once 而不是 require