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 文件中一个一个地注释/删除它无法重新声明的每个类。只是在我将它们全部注释掉并刷新管理员时才发现页面,它没有给出任何错误。只是一张白页。

有任何想法吗?

4

1 回答 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_existsandReflectionFunction代替。

看起来某个文件包含/需要两次。如果该__adminhtml.php文件经常被包含一次,您可以添加一个调用来debug_print_backtrace()查看它是从哪里包含的。

此外,如果您有自定义文件,则可以require_once使用require.

于 2015-11-22T15:13:24.583 回答