Lỗi nghiêm trọng: Gọi hàm thành viên viết lại () trên một đối tượng không phải sau khi nâng cấp


12

Chúng tôi đã cố gắng nâng cấp cài đặt Magento của chúng tôi từ 1.7.0.2 lên 1.8.0.0. Bây giờ chúng tôi đã nhận được lỗi sau trên tất cả các trang:

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

Chúng tôi đã cố gắng xóa tất cả bộ nhớ cache, vô hiệu hóa và biên dịch lại trình biên dịch và reindex trình chỉ mục. Đầu ngày hôm nay mọi thứ đã diễn ra tốt đẹp trên cài đặt địa phương của chúng tôi. Đây là cài đặt tương tự ngoại trừ một số đơn đặt hàng và dữ liệu khách hàng.

Khi trình biên dịch được kích hoạt, lỗi sẽ thay đổi trong:

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

Làm thế nào chúng ta có thể gỡ lỗi lỗi này?


Tôi cũng đã nâng cấp lên 1.8 magento Mine có một số vấn đề tương tự nhưng lỗi tôi gặp không phải do lỗi ... hãy xem lỗi như sau:> Lỗi nghiêm trọng: Gọi tới hàm thành viên get SẢNtAttribution () trên a> không phải đối tượng trong > /home/shopk3if/public_html/app/design/frontend/base/default/template/catalog/product/price.phtml> trên dòng 50 plz giúp tôi cho các mã như tôi không phải là nhà phát triển ...

Bạn có chắc chắn rằng bạn đã tắt trình biên dịch?
brentwpeterson

@MichaelvanEijden Bạn có thể theo dõi nguyên nhân gốc rễ của việc này không?
Alan Storm

1
@AlanStorm Vì một số lý do, chỉ có một phần của các tệp được chuyển trong quá trình nâng cấp. Câu trả lời của bạn đã đưa tôi đến đúng nơi mặc dù. Cảm ơn!
Michael

Tôi có cùng một vấn đề ..... nhưng bây giờ tôi đã cố gắng ghi đè tất cả các tệp có nội dung của kho lưu trữ cài đặt magento ZIP .... nhưng nó không giúp được gì. Rằng sẽ trở thành một phiên gỡ lỗi loooong! KHÔNG cập nhật Magento cho đến nay làm việc cho tôi mà không có vấn đề!
cljk

Câu trả lời:


5

Nhìn vào dòng 165

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

Phương thức _getRequestRewriteControllersẽ trả về một đối tượng. Vì một số lý do, nó không trả về một đối tượng trong hệ thống của bạn.

Nhìn vào định nghĩa phương pháp đó, chúng ta thấy như sau

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

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

Mage nhìn vào global/request_rewrite/modelnút cấu hình để tìm bí danh lớp. Trong một hệ thống cửa hàng nên

core/url_rewrite_request

Mà Magento sau đó sử dụng để khởi tạo một mô hình. Hai dự đoán của tôi là

  1. Có một mô-đun với một tên lớp khác, không hợp lệ ở đây, điều này ngăn Magento khởi tạo đối tượng.

  2. Hệ thống của bạn đang thiếu Mage_Core_Model_Url_Rewrite_Requesttệp lớp (at app/code/core/Mage/Core/Model/Url/Rewrite/Request.php), mới trong Magento 1.8


1
Ngoài ra, hãy xem câu trả lời / nhận xét từ @navotjer bên dưới.
Alan Storm

7

Tôi cũng gặp vấn đề tương tự và bên cạnh việc xóa bộ đệm, tôi phải đặt quyền truy cập thư mục trên / var và thư mục con thành 777 (đừng lo, tệp .htaccess trong / var ngăn mọi thứ có thể đọc được "con người").


1
Chạy vào đây hôm nay và tán thành câu trả lời này - bỏ qua một cơ sở mã Magento mới có thể thay đổi các quyền trên varthư mục của bạn , điều đó có nghĩa là Magneto có thể trở lại thư mục var hệ thống có cấu hình lưu trữ cũ.
Alan Storm

+1 Bạn đã cứu ngày của tôi! Đã nâng cấp từ 1.6.0.1 lên 1.9.0.1
toesslab

2

Nếu bạn có một máy chủ bộ đệm như memcached, hãy thử khởi động lại nó. Tôi đã có cùng một vấn đề và tôi đã giải quyết theo cách này.


Hoặc nếu Redis:redis-cli flushall
kiatng

2

Xóa bộ nhớ cache redis;

redis-cli

FLUSHALL

Vấn đề của nó đã được giải quyết.


2

Tôi đã cố gắng làm theo lời giải thích của @AlanStorm, nhưng cuối cùng thấy đó là một vấn đề lưu trữ. Tôi chỉ cần có rm -rf *tất cả các tập tin trong ~/public_html/var/cachevà tôi thấy rằng trang web được tải chính xác.


Đơn giản như thế này. Tôi gặp vấn đề tương tự khi nâng cấp từ 1.7 lên 1.9, nhưng quên xóa thư mục bộ đệm.
Ricardo Martins

1

Tôi có cùng một vấn đề

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

Xóa tất cả trong / var / cache sẽ giải quyết vấn đề


0

Xóa tất cả mọi thứ trong var / cache cũng giải quyết vấn đề cho tôi.

Cũng phải xóa tệp bảo trì.flag trước khi sự cố này xảy ra, vì một trang bảo trì đã có mặt.

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.