我打开网站时出现可能重复:
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}
答案 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),
);
}
//...
}
节点的原因,您将找到解决问题的方法。