Benachrichtigung, plötzlicher Fehler: Warnung: include (): Dateiname darf nicht leer sein

7

Seit heute Abend sehen wir diesen Fehler.

Zuerst sehen wir dies im Fehlerprotokoll

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

und mit vollständigem Ausnahmedruck sehen wir Folgendes.

Ich habe versucht, Benachrichtigungen zu deaktivieren, weiß aber nicht, wo ich anfangen soll (und wie dies plötzlich auftritt).

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')
snh_nl
quelle

Antworten:

7

Leider enthält Ihre Frage nicht genügend Informationen, um dies genau zu debuggen. Aufgrund der Besonderheiten Ihres Aufrufstapels hat dieses System anscheinend einige Anpassungen erhalten, die möglicherweise das Standardverhalten des Geschäfts beeinträchtigen. Hier sind einige Beobachtungen, die Ihnen helfen können, das Problem aufzuspüren

  1. Magento versucht, includeeinen Vorlagenblock mit einer leeren Zeichenfolge als Vorlage zu erstellen. Deshalb sehen Sie die Warnung. Suchen Sie nach neuen (oder alten) setTemplateoder template=""in Ihrem Code oder nach Orten, an denen ein Vorlagenblock instanziiert wird, ohne eine Vorlage festzulegen

  2. Magento versucht, die Vorlage zu rendern. Da dies system/cache/notifications.phtmljedoch auf das baseDesignpaket zurückgegriffen wurde, bedeutet dies, dass Magento diese Datei in keinem adminhtml Paket / Thema finden konnte. Dies ist eine Bestandsdatei, die im Lieferumfang des Systems enthalten ist und möglicherweise entfernt wurde

  3. Sie sagen, Sie sehen es "überall", aber die Fehler zeigen an, dass es sich nur um ein Administratorproblem handelt. Dies könnte bedeuten, dass Sie versuchen, Admin-Code über das Front-End von umgekehrt auszuführen (wiederum ist es schwierig, solche Dinge aus der Ferne zu debuggen).

Alan Storm
quelle
1
Danke Allen. Etwas ist mir aufgefallen. - es scheint nur im Backend zu passieren - es gibt kein / base / default für adminhtml - die Datei sitzt gut in app / design / adminhtml / default / default / template / index / notifications.phtml - Ich nehme an, es muss eine sein Erweiterung mit einer leeren Vorlagenreferenz
snh_nl
2
Danke Allen, das ist jetzt ein Löser. Das gesamte Verzeichnis / public_html / app / design / adminhtml / default / default / template / system / cache war verschwunden, dh leer. Ich habe keine Ahnung warum und wie. Aber danke - ich habe einige Dateien aus dem Lager kopiert und der Fehler ist weg
snh_nl
Vielen Dank, in meinem Fall wurde der Fehler ausgelöst, weil ich verschiedene Vorlagenordner habe und eine Vorlage im falschen Ordner erstellt habe.
Kostanos
Dies kann auch ein Verweis auf eine nicht vorhandene Vorlage sein. In meinem Fall a getChildHtml()zu einem Block verwendet, der eine nicht vorhandene Vorlage verwendet. Etwas anders als Ihr Punkt 1.
Jacques
2

Siehe Wie kann ich "leere Vorlage" debuggen: Der Dateiname darf in Template.php nicht leer sein

Wir haben dies durch Hinzufügen gelöst

    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);
    }

wo 'Mage :: printDebugBacktrace ()' von hier gepackt wurde

http://www.blog.magepsycho.com/utilizing-debug_backtrace-function-for-magento-debugging/

Auf diese Weise hatten wir noch mehr Informationen ...

snh_nl
quelle
1

Alle obigen Antworten sind richtig. Ich wollte nur einen bestimmten Fall hinzufügen, von dem ich denke, dass viele Leute darüber stolpern könnten.

Wenn Sie Modman zum Verwalten Ihrer Module (oder eines anderen Modul-Symlinking-Managers) verwenden, stellen Sie sicher, dass Ihre Modman-Datei die richtigen Pfade enthält, und danach haben Sie Folgendes getan:

modman deploy namespace_module.

Persönlich habe ich mindestens 15 Minuten für das Debuggen so offensichtlicher Dinge verloren, als ich ein Modul entwickelt und einen Befehl "generate-modman" verwendet habe, um Zeit zu sparen. Danach habe ich vergessen, es erneut aufzurufen, damit neu erstellte Dateien hinzugefügt und rechts Symlinks bereitgestellt werden Ort.

versedi
quelle
Interessant, ich habe den gleichen Fehler, der von OP erwähnt wurde, und verwende modman für die Modulbereitstellung. Aber ich habe alle Modman-Dateien selbst geschrieben und festgestellt, dass ich sie nicht richtig bereitstellen kann, wenn fehlerhafte Pfade vorhanden sind. Wollen Sie damit sagen, dass dies dennoch der Fall sein könnte?
Alex Timmer