无法重新声明类Magento

3

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

domain.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 )

自从发现这个新错误后,我试图逐个注释/删除__adminhtml.php文件中无法重新声明的每个类。但是当我将它们全部注释掉并刷新管理页面时,竟然没有任何错误,只有一个空白页面。有什么想法吗?
1个回答

4
以下是一些调试提示,您可以尝试找出问题的原因。
此代码段将显示给定类之前定义的位置:
$className = 'Foo';
if ( class_exists( $className ) ) {
  $rc = new ReflectionClass($className);
  print __FILE__.':'.__LINE__. ": Class $className already defined in " 
    . $rc->getFileName() . ":" . $rc->getStartLine();
}

你可以通过使用function_existsReflectionFunction来实现函数的相同操作。
看起来某个文件被包含/要求了两次。如果是__adminhtml.php文件被包含太多次,你可以添加一个调用debug_print_backtrace()的语句来查看它从哪里被包含。
另外,如果你有自定义的文件,可以使用require_once代替require

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接