模块“Mage_Api”需要magento中的模块“Mage_Core”错误

时间:2012-11-06 17:10:40

标签: php magento

  

可能重复:
  Magento error: Module “Mage_Api” requires module “Mage_Core”

我打开网站时出现

错误列表:

Module "Mage_Api" requires module "Mage_Core".

Trace:
#0 /home/towelsjt/public_html/app/code/core/Mage/Core/Model/Config.php(849): Mage::throwException('Module "Mage_Ap...')
#1 /home/towelsjt/public_html/app/code/core/Mage/Core/Model/Config.php(812): Mage_Core_Model_Config->_sortModuleDepends(Array)
#2 /home/towelsjt/public_html/app/code/core/Mage/Core/Model/Config.php(315): Mage_Core_Model_Config->_loadDeclaredModules()
#3 /home/towelsjt/public_html/app/code/core/Mage/Core/Model/App.php(414): Mage_Core_Model_Config->loadModules()
#4 /home/towelsjt/public_html/app/code/core/Mage/Core/Model/App.php(343): Mage_Core_Model_App->_initModules()
#5 /home/towelsjt/public_html/app/Mage.php(683): Mage_Core_Model_App->run(Array)
#6 /home/towelsjt/public_html/index.php(87): Mage::run('', 'store')
#7 {main}

1 个答案:

答案 0 :(得分:4)

此错误消息让您知道Magento尝试加载Mage_Api模块的声明,但无法找到Mage_Core模块的声明。由于Mage_Api配置为依赖于此模块,因此Magento保释。

有可能发生这种情况的原因很多,而且你的问题中没有足够的信息可以推断出正在发生的事情。您需要自己进一步调试此问题。

首先,这个例外来自以下方法

#File: app/code/core/Mage/Core/Model/Config.php
protected function _sortModuleDepends($modules)
{
    ...
}    

$modules数组包含系统的已加载app/etc/modules信息。您的异常出现在第一个循环中

foreach ($modules as $moduleName => $moduleProps) {
    $depends = $moduleProps['depends'];
    foreach ($moduleProps['depends'] as $depend => $true) {
        if ($moduleProps['active'] && ((!isset($modules[$depend])) || empty($modules[$depend]['active']))) {
            Mage::throwException(
                Mage::helper('core')->__('Module "%1$s" requires module "%2$s".', $moduleName, $depend)
            );
        }
        $depends = array_merge($depends, $modules[$depend]['depends']);
    }
    $modules[$moduleName]['depends'] = $depends;
}

检查$modules的内容。如果没有Mage_Core密钥(我怀疑),这意味着Magento无法加载声明app/etc/modules的{​​{1}}中的文件。默认情况下,这是Mage_Core。检查此文件的权限,并检查它是否为有效的XML。如果通过粗略检查,则会在Mage_All.xml

中加载此文件
_loadDeclaredModules

确定缺少protected function _loadDeclaredModules($mergeConfig = null) { //... foreach ($moduleFiles as $file) { $fileConfig->loadFile($file); $unsortedConfig->extend($fileConfig); } $moduleDepends = array(); foreach ($unsortedConfig->getNode('modules')->children() as $moduleName => $moduleNode) { if (!$this->_isAllowedModule($moduleName)) { continue; } $depends = array(); if ($moduleNode->depends) { foreach ($moduleNode->depends->children() as $depend) { $depends[$depend->getName()] = true; } } $moduleDepends[$moduleName] = array( 'module' => $moduleName, 'depends' => $depends, 'active' => ('true' === (string)$moduleNode->active ? true : false), ); } //... } 节点的原因,您将找到解决问题的方法。