问问题
1853 次
1 回答
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
声明Mage_Core
. 默认情况下这是Mage_All.xml
. 检查此文件的权限,并检查它是否是有效的 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),
);
}
//...
}
确定Mage_Core
节点丢失的原因,您将找到问题的解决方案。
于 2012-11-06T20:06:29.817 回答