无法重新声明 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_exists
和 ReflectionFunction
即可。
某处文件似乎 included/required 两次。
如果 __adminhtml.php
文件被包含的频率太高,您可以添加对 debug_print_backtrace()
的调用以查看它是从哪里被包含的。
此外,如果您有自定义文件,您可以使用 require_once
而不是 require
。
我有一个有趣的问题。我网站的前端加载正常,但是当我尝试导航到:
域名.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_exists
和 ReflectionFunction
即可。
某处文件似乎 included/required 两次。
如果 __adminhtml.php
文件被包含的频率太高,您可以添加对 debug_print_backtrace()
的调用以查看它是从哪里被包含的。
此外,如果您有自定义文件,您可以使用 require_once
而不是 require
。