【问题标题】:Magento: Mage_Core_Exception Invalid block type: Mage_Banners_Block_BannersMagento:Mage_Core_Exception 无效的块类型:Mage_Banners_Block_Banners
【发布时间】:2014-07-21 00:49:42
【问题描述】:

有人知道这个 Magento 安装有什么问题吗?

更改了虚拟主机上的一些设置(与该特定站点的虚拟主机无关),然后该站点停止加载?

我更改了设置,但页面仍然加载不正确。

这是一个浏览器截图,如您所见,几乎是空白...

这是 Magento 抛出的日志:

2014-07-20T14:11:41+00:00 ERR (3):
exception 'Mage_Core_Exception' with message 'Invalid block type: Mage_Banners_Block_Banners' in /home/nginx/dutchbarnheadshop/public/app/Mage.php:595
Stack trace:
#0 /home/nginx/dutchbarnheadshop/public/app/code/core/Mage/Core/Model/Layout.php(495): Mage::throwException('Invalid block t...')
#1 /home/nginx/dutchbarnheadshop/public/app/code/core/Mage/Core/Model/Layout.php(437): Mage_Core_Model_Layout->_getBlockInstance('banners/banners', Array)
#2 /home/nginx/dutchbarnheadshop/public/app/code/core/Mage/Core/Model/Email/Template/Filter.php(164): Mage_Core_Model_Layout->createBlock('banners/banners', NULL, Array)
#3 [internal function]: Mage_Core_Model_Email_Template_Filter->blockDirective(Array)
#4 /home/nginx/dutchbarnheadshop/public/lib/Varien/Filter/Template.php(134): call_user_func(Array, Array)
#5 /home/nginx/dutchbarnheadshop/public/app/code/core/Mage/Core/Model/Email/Template/Filter.php(504): Varien_Filter_Template->filter('{{block type="b...')
#6 /home/nginx/dutchbarnheadshop/public/app/code/core/Mage/Cms/Block/Block.php(54): Mage_Core_Model_Email_Template_Filter->filter('{{block type="b...')
#7 /home/nginx/dutchbarnheadshop/public/app/code/core/Mage/Core/Block/Abstract.php(919): Mage_Cms_Block_Block->_toHtml()
#8 /home/nginx/dutchbarnheadshop/public/app/design/frontend/default/fashionstore/template/page/3columns.phtml(62): Mage_Core_Block_Abstract->toHtml()
#9 /home/nginx/dutchbarnheadshop/public/app/code/core/Mage/Core/Block/Template.php(241): include('/home/nginx/dut...')
#10 /home/nginx/dutchbarnheadshop/public/app/code/core/Mage/Core/Block/Template.php(272): Mage_Core_Block_Template->fetchView('frontend/defaul...')
#11 /home/nginx/dutchbarnheadshop/public/app/code/core/Mage/Core/Block/Template.php(286): Mage_Core_Block_Template->renderView()
#12 /home/nginx/dutchbarnheadshop/public/app/code/core/Mage/Core/Block/Abstract.php(919): Mage_Core_Block_Template->_toHtml()
#13 /home/nginx/dutchbarnheadshop/public/app/code/core/Mage/Core/Model/Layout.php(555): Mage_Core_Block_Abstract->toHtml()
#14 /home/nginx/dutchbarnheadshop/public/app/code/core/Mage/Core/Controller/Varien/Action.php(390): Mage_Core_Model_Layout->getOutput()
#15 /home/nginx/dutchbarnheadshop/public/app/code/core/Mage/Catalog/controllers/CategoryController.php(161): Mage_Core_Controller_Varien_Action->renderLayout()
#16 /home/nginx/dutchbarnheadshop/public/app/code/core/Mage/Core/Controller/Varien/Action.php(418): Mage_Catalog_CategoryController->viewAction()
#17 /home/nginx/dutchbarnheadshop/public/app/code/core/Mage/Core/Controller/Varien/Router/Standard.php(250): Mage_Core_Controller_Varien_Action->dispatch('view')
#18 /home/nginx/dutchbarnheadshop/public/app/code/core/Mage/Core/Controller/Varien/Front.php(172): Mage_Core_Controller_Varien_Router_Standard->match(Object(Mage_Core_Controller_Request_Http))
#19 /home/nginx/dutchbarnheadshop/public/app/code/core/Mage/Core/Model/App.php(354): Mage_Core_Controller_Varien_Front->dispatch()
#20 /home/nginx/dutchbarnheadshop/public/app/Mage.php(684): Mage_Core_Model_App->run(Array)
#21 /home/nginx/dutchbarnheadshop/public/index.php(87): Mage::run('default', 'store')
#22 {main}

这里是 nginx 配置:

server {
    server_name
        **HIDDEN**
        **HIDDEN**
    ;

    listen 80;

    return 301 https://**HIDDEN**$request_uri;
}

server {
    server_name
        **HIDDEN**
        **HIDDEN**
    ;

    listen 443 ssl;

    ssl_certificate ssl/dutchbarnheadshop.pem;
    ssl_certificate_key ssl/dutchbarnheadshop.key;

    root /home/nginx/dutchbarnheadshop/public;
    #index index.html index.php;

    access_log /home/nginx/dutchbarnheadshop/logs/access.log;
    error_log /home/nginx/dutchbarnheadshop/logs/error.log;

    location / {
        index index.html index.php;
        try_files $uri $uri/ @handler;
        expires 30d;
    }

    location ^~ /app/                       { deny all; }
    location ^~ /includes/                  { deny all; }
    location ^~ /lib/                       { deny all; }
    location ^~ /media/downloadable/        { deny all; }
    location ^~ /pkginfo/                   { deny all; }
    location ^~ /report/config.xml          { deny all; }
    location ^~ /var/                       { deny all; }

    location /var/export {
        auth_basic              "Restricted";
        auth_basic_user_file    htpasswd;
        autoindex               on;
    }

    location /. {
        return 404;
    }

    location @handler {
        rewrite / /index.php;
    }

    location ~ .php/ {
        rewrite ^(.*.php)/ $1 last;
    }

    location ~ .php$ {
        if (!-e $request_filename) { rewrite / /index.php last; }
        expires off;
        fastcgi_pass    unix:/var/run/php5-fpm.sock;
        fastcgi_param   HTTPS           $fastcgi_https;
        fastcgi_param   SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_param   MAGE_RUN_CODE   default;
        fastcgi_param   MAGE_RUN_TYPE   store;
        fastcgi_param   MAGE_IS_DEVELOPER_MODE true;
        include         fastcgi_params;
        fastcgi_buffer_size 128k;
        fastcgi_buffers 256 16k;
        fastcgi_busy_buffers_size 256k;
        fastcgi_temp_file_write_size 256k;
        fastcgi_read_timeout 240;
    }
}

我不知道为什么它没有加载!这让我把头发扯掉了!

【问题讨论】:

  • magento 遵守这一点,它在 app/code/core/Mage/Banners/Block/Banners.php 中查找块文件,但在那里找不到。所以检查那里的文件是否存在
  • 它不见了,但我不完全确定为什么?我刚刚检查了该网站最初来自的 zip 文件,它不存在但没有它也可以工作?
  • 不确定到底发生了什么。现在 Magento 需要该块来呈现页面内容。所以它寻找那个块并且找不到。因此抱怨。因此,根据您的 Magento 版本,您需要找到该文件的精确副本,然后必须在那里替换它。 注意:还要检查 communitylocal 代码池中的文件 (app/code/<local>|<commuinty>)。
  • 我遇到了问题,它来自提交中已删除的模块文件夹,而没有删除相应的 xml。虽然编译完成并处于活动状态,但它确实有效,但随后......

标签: magento nginx


【解决方案1】:

在 Magento 开始在页面本身上抛出错误后,我设法找出了问题:

Parse error: syntax error, unexpected 'this' (T_STRING), expecting variable (T_VARIABLE) or '$' in 
/home/nginx/dutchbarnheadshop/public/app/design/frontend/default/fashionstore/template/page/html/header.phtml on line 52

于是我打开了header.phtml,如错误所示,发现如下:

<?php echo $ this -> getChildHtml('qbanner.top') ?>

如您所见,$ 和 this 之间的空格是不需要的,所以我删除了它,重新启动 php5-fpm 并再次工作!

我认为这是因为这个特定的文件被 php5-xcache 缓存了,当我昨天重新启动服务器时,缓存显然被清除了。当它尝试重新加载此文件时,该文件有语法错误。

感谢大家的建议!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-08-19
    • 1970-01-01
    • 1970-01-01
    • 2016-05-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多