Magento致命错误:include():无法在第93行的/lib/Varien/Autoload.php中重新声明类varien_profiler

时间:2014-04-04 22:34:50

标签: php magento nginx

我刚刚复制了我们的文件和数据库。似乎所有东西都具有正确的权限,并链接到正确的数据库和指向正确路径的正确数据库。我有什么想法可以得到这个错误吗?

1 个答案:

答案 0 :(得分:1)

这是一个有趣的错误。

  

Magento致命错误:include():无法在第93行的/lib/Varien/Autoload.php中重新声明类varien_profiler

这很有意思,因为我希望看到Varien_Profiler,而不是'varien_profiler'。抛出此错误的行是您自动加载方法的最后一行。

#File: lib/Varien/Autoload.php
public function autoload($class)
{
    if ($this->_collectClasses) {
        $this->_arrLoadedClasses[self::$_scope][] = $class;
    }
    if ($this->_isIncludePathDefined) {
        $classFile =  COMPILER_INCLUDE_PATH . DIRECTORY_SEPARATOR . $class;
    } else {
        $classFile = str_replace(' ', DIRECTORY_SEPARATOR, ucwords(str_replace('_', ' ', $class)));
    }
    $classFile.= '.php';
    //echo $classFile;die();
    return include $classFile;
}

您的错误有些奇怪,似乎有人试图声明/使用

varien_profiler

类。但是,此类的所有标准Magento引用都是

Varien_Profiler

带领字案例。当您使用Varien_Profiler时,Magento会尝试包含文件

lib/Varien/Profiler.php

但是,在您的情况下,Magento应该尝试包含文件

lib/varien/profiler.php

哪个不同 - 并且在标准安装中不存在。我猜你是从一个经过大量修改的unix系统下载的 - 并将其下载到Mac或Windows系统,其中区分大小写不是问题。

所有这些都是很长的说法 - 这是您特定安装的问题,您需要对其进行调试。正如其他评论者所指出的那样,最佳方法是获取堆栈跟踪并找出胭脂varien_profiler的来源,然后将其修复为Varien_Profiler。使用以下代码暂时修改上述功能

if($class == 'varien_profiler')
{
    mageDebugBacktrace();
    exit;
}
return include $classFile;

这将输出files.php:line-number的简化堆栈跟踪 - 类似这样的

[1] :
[2] /Users/alanstorm/Sites2014/magento-march2014.dev/app/Mage.php:665
[3] /Users/alanstorm/Sites2014/magento-march2014.dev/index.php:87

这可以让你追踪胭脂声明。