通知,突然错误:警告:inclage():文件名不能为空
题
从今天晚上开始,我们看到了这个错误。
首先,我们在错误日志中看到这一点
2013-08-11T18:46:59+00:00 ERR (3): Warning: include(): Filename cannot be empty in app/code/core/Mage/Core/Block/Template.php on line 241
2013-08-11T18:46:59+00:00 ERR (3): Warning: include(): Filename cannot be empty in app/code/core/Mage/Core/Block/Template.php on line 241
2013-08-11T18:46:59+00:00 ERR (3): Warning: include(): Failed opening '' for inclusion (include_path='lib/minify:app/code/local:app/code/community:app/code/core:lib:.') in app/code/core/Mage/Core/Block/Template.php on line 241
除了完全例外,我们会看到以下内容。
我尝试禁用通知,但不知道从哪里开始(以及如何突然发生)
Warning: include(): Filename cannot be empty in app/code/core/Mage/Core/Block/Template.php on line 241
#0 app/code/core/Mage/Core/Block/Template.php(241): mageCoreErrorHandler(2, 'include(): Filename cannot be empty', 'app/code/core/Mage/Core/Block/Template.php', 241, Array)
#1 app/code/core/Mage/Core/Block/Template.php(241): Mage_Core_Block_Template->fetchView()
#2 app/code/core/Mage/Core/Block/Template.php(272): Mage_Core_Block_Template->fetchView('adminhtml/base/default/template/system/cache/notifications.phtml')
#3 app/code/core/Mage/Core/Block/Template.php(286): Mage_Core_Block_Template->renderView()
#4 app/code/core/Mage/Adminhtml/Block/Template.php(81): Mage_Core_Block_Template->_toHtml()
#5 app/code/core/Mage/Adminhtml/Block/Cache/Notifications.php(62): Mage_Adminhtml_Block_Template->_toHtml()
#6 app/code/core/Mage/Core/Block/Abstract.php(863): Mage_Adminhtml_Block_Cache_Notifications->_toHtml()
#7 app/code/core/Mage/Core/Block/Text/List.php(43): Mage_Core_Block_Abstract->toHtml()
#8 app/code/core/Mage/Core/Block/Abstract.php(863): Mage_Core_Block_Text_List->_toHtml()
#9 app/code/core/Mage/Core/Block/Abstract.php(582): Mage_Core_Block_Abstract->toHtml()
#10 app/code/core/Mage/Core/Block/Abstract.php(526): Mage_Core_Block_Abstract->_getChildHtml('notifications', true)
#11 app/design/adminhtml/default/default/template/page.phtml(55): Mage_Core_Block_Abstract->getChildHtml('notifications')
#12 app/code/core/Mage/Core/Block/Template.php(241): include('app/design/adminhtml/default/default/template/page.phtml')
#13 app/code/core/Mage/Core/Block/Template.php(272): Mage_Core_Block_Template->fetchView('adminhtml/default/default/template/page.phtml')
#14 app/code/core/Mage/Core/Block/Template.php(286): Mage_Core_Block_Template->renderView()
#15 app/code/core/Mage/Adminhtml/Block/Template.php(81): Mage_Core_Block_Template->_toHtml()
#16 app/code/core/Mage/Core/Block/Abstract.php(863): Mage_Adminhtml_Block_Template->_toHtml()
#17 app/code/core/Mage/Core/Model/Layout.php(555): Mage_Core_Block_Abstract->toHtml()
#18 app/code/core/Mage/Core/Controller/Varien/Action.php(390): Mage_Core_Model_Layout->getOutput()
#19 app/code/core/Mage/Adminhtml/controllers/DashboardController.php(43): Mage_Core_Controller_Varien_Action->renderLayout()
#20 app/code/core/Mage/Core/Controller/Varien/Action.php(419): Mage_Adminhtml_DashboardController->indexAction()
#21 app/code/core/Mage/Core/Controller/Varien/Router/Standard.php(250): Mage_Core_Controller_Varien_Action->dispatch('index')
#22 app/code/core/Mage/Core/Controller/Varien/Front.php(176): Mage_Core_Controller_Varien_Router_Standard->match(Mage_Core_Controller_Request_Http)
#23 app/code/core/Mage/Core/Model/App.php(354): Mage_Core_Controller_Varien_Front->dispatch()
#24 app/Mage.php(683): Mage_Core_Model_App->run(Array)
#25 index.php(88): Mage->run('default', 'store')
解决方案
不幸的是,您的问题中没有足够的信息来准确调试此问题,并且根据您的呼叫堆栈的细节,看起来该系统已收到一些可能会干扰标准商店行为的自定义。这是一些观察结果,可以帮助您找到问题
Magento试图
include
带有空字符串集的模板块作为模板。这就是为什么您会看到警告。寻找任何新(或旧)setTemplate
, , 或者template=""
在您的代码或任何位置中Magento试图渲染模板
system/cache/notifications.phtml
- 但是,事实又回到了base
执行此操作的设计包意味着Magento找不到此文件 任何adminhtml
软件包/主题。这是一个与系统一起发货的库存文件,可能已被删除您说您“无处不在”看到它,但是错误表明这是管理员的问题。这可能意味着您正在尝试从VICE的前端运行管理代码(同样,很难远程调试这种事情)
其他提示
看 如何调试“空模板”:文件名不能在template.php中为空
我们通过添加
if (strpos($includeFilePath, realpath($this->_viewDir)) === 0 || $this->_getAllowSymlinks()) {
if (empty($includeFilePath)) {
Mage::Log("Cannot set emptt filename" . $fileName . " on a " . get_class($this) );
Mage::log(Mage::printDebugBacktrace(), null, 'backtrace.log'); //or you can even log the backtrace
include $includeFilePath;
} else {
include $includeFilePath;
}
} else {
Mage::log('Not valid template file:'.$fileName, Zend_Log::CRIT, null, null, true);
}
从这里抓住了'mage :: printdebugbacktrace()'
http://www.blog.magepsycho.com/utilizing-debug_backtrace-function-function-for-magento-debugging/
这样,我们还有更多信息要浏览...
以上所有答案都是正确的。我只是想添加一个我认为很多人可能会绊倒的特定案例。
如果您使用Modman来管理模块(或任何其他模块Symlinking Manager),请确保您的Modman文件包含正确的路径,然后您这样做:
modman deploy namespace_module
.
就我个人而言,我发现自己在开发一些模块并使用Generate -Modman命令来节省时间时至少失去了至少15分钟的时间来调试如此明显的事情 - 此后忘记了再次调用它,因此它会添加新创建的文件并右侧部署Symlinks地方。