ข้อผิดพลาดร้ายแรง: การเรียกไปยังฟังก์ชันสมาชิก rewrite () บนไม่ใช่วัตถุหลังจากการปรับรุ่น


12

เราพยายามอัพเกรดการติดตั้ง Magento จาก 1.7.0.2 เป็น 1.8.0.0 ตอนนี้เราได้รับข้อผิดพลาดต่อไปนี้ในทุกหน้า:

Fatal error: Call to a member function rewrite() on a non-object in /home/clientname/domains/domain.com/public_html/app/code/core/Mage/Core/Controller/Varien/Front.php on line 165

เราพยายามที่จะล้างแคชทั้งหมดปิดการใช้งานและคอมไพเลอร์คอมไพล์ใหม่และดัชนีดัชนีใหม่ ทุกวันนี้ทุกอย่างเป็นไปด้วยดีในการติดตั้งในพื้นที่ นี่คือการติดตั้งเดียวกันยกเว้นบางคำสั่งซื้อและข้อมูลลูกค้า

เมื่อคอมไพเลอร์ถูกเปิดใช้งานข้อผิดพลาดจะเปลี่ยนเป็น:

Fatal error: Call to a member function rewrite() on a non-object in /home/clientname/domains/domain.com/public_html/includes/src/__default.php on line 17761

เราจะแก้ไขข้อผิดพลาดนี้ได้อย่างไร


ฉันอัพเกรดเป็น 1.8 magento Mine มีปัญหาเดียวกัน แต่ข้อผิดพลาดที่ฉันได้รับไม่ได้อยู่ในตัวแปร ... ดูข้อผิดพลาดดังนี้:> ข้อผิดพลาดร้ายแรง: การเรียกใช้ฟังก์ชันสมาชิก getProductAttribute () บนวัตถุที่ไม่ใช่ > /home/shopk3if/public_html/app/design/frontend/base/default/template/catalog/product/price.phtml> ในบรรทัดที่ 50 โปรดช่วยฉันใช้รหัสเพราะฉันไม่ใช่นักพัฒนา ...

คุณแน่ใจหรือว่าคุณปิดการรวบรวม
brentwpeterson

@MichaelvanEijden คุณสามารถติดตามสาเหตุของสิ่งนี้ได้หรือไม่
Alan Storm

1
@AlanStorm ด้วยเหตุผลบางอย่างมีเพียงบางส่วนของไฟล์ที่ถ่ายโอนระหว่างการอัพเกรด คำตอบของคุณพาฉันไปถูกที่แล้ว ขอบคุณ!
Michael

ฉันมีปัญหาเดียวกัน ..... แต่ตอนนี้ฉันพยายามเขียนทับไฟล์ทั้งหมดด้วยเนื้อหาของไฟล์เก็บถาวรการติดตั้ง ZIP ของวีโอไอพี .... แต่มันก็ไม่ได้ช่วยอะไร นั่นจะเป็นช่วงการดีบัก loooong! ไม่มีการอัพเดต Magento จนถึงตอนนี้สำหรับฉันโดยไม่มีปัญหา!
cljk

คำตอบ:


5

มองที่บรรทัดที่ 165

#File: app/code/core/Mage/Core/Controller/Varien/Front.php
$this->_getRequestRewriteController()->rewrite();

วิธีการ_getRequestRewriteControllerควรส่งคืนวัตถุ ด้วยเหตุผลบางอย่างมันไม่ได้ส่งคืนวัตถุในระบบของคุณ

ลองดูที่นิยามของเมธอดนั้นเราจะเห็นสิ่งต่อไปนี้

protected function _getRequestRewriteController()
{
    $className = (string)Mage::getConfig()->getNode('global/request_rewrite/model');

    return Mage::getSingleton('core/factory')->getModel($className, array(
        'routers' => $this->getRouters(),
    ));
}

Mage ดูที่global/request_rewrite/modelโหนดการกำหนดค่าเพื่อค้นหานามแฝงของคลาส ในระบบร้านค้านี้ควรจะเป็น

core/url_rewrite_request

วีโอไอพีรุ่นใดที่ใช้ในการสร้างโมเดล ฉันเดาสองคน

  1. มีโมดูลที่มีชื่อคลาสที่แตกต่างและไม่ถูกต้องที่นี่ซึ่งป้องกันไม่ให้วีโอไอพียกตัวอย่างวัตถุ

  2. ระบบของคุณไม่มีMage_Core_Model_Url_Rewrite_Requestไฟล์คลาส (at app/code/core/Mage/Core/Model/Url/Rewrite/Request.php) ซึ่งเป็นสิ่งใหม่ใน Magento 1.8


1
นอกจากนี้โปรดดูคำตอบ / ความคิดเห็นจาก @navotjer ด้านล่าง
Alan Storm

7

ฉันมีปัญหาเดียวกันและนอกเหนือจากการล้างแคชฉันต้องตั้งค่าการอนุญาตของโฟลเดอร์ใน / var และไดเรกทอรีย่อยเป็น 777 (ไม่ต้องกังวลไฟล์. htaccess ใน / var ป้องกันไม่ให้ทุกคนอ่านได้ "มนุษย์")


1
ลองเข้ามาในวันนี้และทำตามคำตอบนี้ - การไม่เปิดเผยฐานข้อมูล Magento ใหม่สามารถเปลี่ยนการอนุญาตในvarโฟลเดอร์ของคุณได้ซึ่งหมายความว่า Magneto อาจเปลี่ยนกลับไปเป็นโฟลเดอร์ var ของระบบที่มีการกำหนดค่าแคชแบบเก่า
Alan Storm

+1 คุณบันทึกวันของฉัน! ได้อัปเกรดจาก 1.6.0.1 เป็น 1.9.0.1
toesslab

2

หากคุณมีแคชเซิร์ฟเวอร์เช่น memcached ให้ลองรีสตาร์ทด้วยเช่นกัน ฉันมีปัญหาเดียวกันและฉันแก้ไขด้วยวิธีนี้


หรือถ้า Redis:redis-cli flushall
kiatng


2

ฉันพยายามติดตามคำอธิบายโดย @AlanStorm แต่ท้ายที่สุดพบว่ามันเป็นปัญหาการแคช ฉันต้องไปrm -rf *ที่ไฟล์ทั้งหมด~/public_html/var/cacheและพบว่าเว็บไซต์โหลดอย่างถูกต้อง


เรียบง่ายเช่นนี้ ฉันมีปัญหาเดียวกันเมื่ออัพเกรดจาก 1.7 เป็น 1.9 แต่ลืมที่จะล้างโฟลเดอร์แคช
Ricardo Martins

1

ฉันมีปัญหาเดียวกัน

Fatal error: Call to a member function rewrite() on a non-object in /home/clientname/domains/domain.com/public_html/app/code/core/Mage/Core/Controller/Varien/Front.php on line 165

การลบทั้งหมดใน / var / cache จะช่วยแก้ปัญหา


0

การลบทุกอย่างใน var / cache ช่วยแก้ปัญหาให้ฉันด้วย

นอกจากนี้ยังต้องลบไฟล์ maintenance.flag ก่อนที่ปัญหานี้จะเกิดขึ้นเนื่องจากมีหน้าการบำรุงรักษาอยู่

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.