Thông báo, lỗi đột ngột: Cảnh báo: include (): Tên tệp không thể để trống


7

Kể từ tối nay, chúng tôi đang thấy lỗi này.

Đầu tiên chúng ta thấy điều này trong nhật ký lỗi

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

và với in ngoại lệ đầy đủ, chúng tôi thấy như sau.

Tôi đã thử tắt thông báo, nhưng không biết bắt đầu từ đâu (và làm thế nào điều này đột nhiên xảy ra)

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

Câu trả lời:


7

Thật không may, không có đủ thông tin trong câu hỏi của bạn để gỡ lỗi chính xác điều này và dựa trên các chi tiết cụ thể của ngăn xếp cuộc gọi của bạn, có vẻ như hệ thống này đã nhận được một vài tùy chỉnh có thể can thiệp vào hành vi của cửa hàng tiêu chuẩn. Dưới đây là một số quan sát có thể giúp bạn theo dõi vấn đề

  1. Magento đang cố gắng tạo includemột khối mẫu với một chuỗi rỗng được đặt làm mẫu. Đó là lý do tại sao bạn nhìn thấy cảnh báo. Tìm kiếm bất kỳ mới (hoặc cũ) setTemplatehoặc template=""trong mã của bạn hoặc bất kỳ nơi nào một khối mẫu được khởi tạo mà không cần đặt mẫu

  2. Magento đang cố gắng kết xuất mẫu system/cache/notifications.phtml- tuy nhiên, thực tế là nó đã quay trở lại basegói thiết kế để thực hiện điều này có nghĩa là Magento không thể tìm thấy tệp này trong bất kỳ adminhtml gói / chủ đề nào. Đây là một tệp chứng khoán đi kèm với hệ thống và có thể đã bị xóa

  3. Bạn nói rằng bạn đang nhìn thấy nó "ở mọi nơi", nhưng các lỗi cho thấy đó chỉ là vấn đề của quản trị viên. Điều này có thể có nghĩa là bạn đang cố chạy mã quản trị viên từ mặt trước của ngược lại (một lần nữa, khó có thể gỡ lỗi từ xa loại này)


1
Thx Allen. Đôi khi tôi nhận thấy. - dường như chỉ xảy ra @ backend - không có / cơ sở / mặc định cho adminhtml - tệp đang ngồi độc đáo trong app / design / adminhtml / default / default / template / index / notify.phtml - Tôi cho rằng nó phải là một tiện ích mở rộng với tham chiếu mẫu trống
snh_nl

2
Cảm ơn Allen đây là người giải quyết. Toàn bộ thư mục / public_html / app / design / adminhtml / default / default / template / system / cache đã biến mất, tức là trống rỗng. Tôi không biết tại sao và làm thế nào. Nhưng cảm ơn - Tôi đã sao chép một số tệp từ kho và lỗi đã biến mất
snh_nl

Cảm ơn bạn, trong trường hợp của tôi, lỗi đã bị ném vì tôi có các thư mục mẫu khác nhau và tôi đã tạo một mẫu trong thư mục sai.
Kostanos

Nó cũng có thể là một tham chiếu đến một mẫu không tồn tại. Trong trường hợp của tôi, tôi đã sử dụng một getChildHtml()khối sử dụng một mẫu không tồn tại. Hơi khác so với quan điểm của bạn 1.
Jacques

2

Xem Làm thế nào tôi có thể gỡ lỗi "mẫu trống": Tên tệp không thể trống trong Template.php

Chúng tôi đã giải quyết điều này bằng cách thêm

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

nơi 'Mage :: printDebugBacktrace ()' đã được lấy từ đây

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

Bằng cách này, chúng tôi đã có thêm một số thông tin để đi qua ...


1

Tất cả các câu trả lời trên là chính xác. Tôi chỉ muốn thêm một trường hợp cụ thể mà tôi nghĩ rằng rất nhiều người có thể vấp ngã.

Trong trường hợp bạn đang sử dụng modman để quản lý các mô-đun của mình (hoặc bất kỳ trình quản lý liên kết mô-đun nào khác), hãy đảm bảo rằng tệp modman của bạn chứa các đường dẫn thích hợp và sau đó bạn đã làm:

modman deploy namespace_module.

Cá nhân tôi đã thấy mình mất ít nhất 15 phút để gỡ lỗi điều hiển nhiên như vậy khi phát triển một số mô-đun và sử dụng lệnh tạo-modman để tiết kiệm thời gian - sau đó quên mất việc gọi lại để nó sẽ thêm các tệp mới được tạo và triển khai các liên kết tượng trưng cho đúng địa điểm.


Thật thú vị, tôi có cùng một lỗi được đề cập bởi OP và sử dụng modman để triển khai mô-đun. Nhưng tôi đã tự viết tất cả các tệp modman và tôi thấy tôi thậm chí không thể triển khai chúng đúng cách nếu có các đường dẫn bị lỗi. Bạn đang nói điều này có thể là trường hợp dù sao?
Alex Timmer
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.