Kesalahan fatal: Memanggil fungsi anggota menulis ulang () pada non-objek setelah peningkatan

12

Kami mencoba memperbarui instalasi Magento kami dari 1.7.0.2 ke 1.8.0.0. Sekarang kami mendapat kesalahan berikut di semua halaman:

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

Kami mencoba menghapus semua cache, menonaktifkan dan mengkompilasi ulang kompiler dan mengindeks ulang pengindeks. Sebelumnya hari ini semuanya berjalan baik di instalasi lokal kami. Ini adalah instalasi yang sama kecuali beberapa pesanan dan data klien.

Ketika kompiler diaktifkan kesalahan berubah dalam:

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

Bagaimana kita bisa men-debug kesalahan ini?

Michael
sumber
Saya juga memutakhirkan ke 1.8 magento. Tambang saya memiliki beberapa masalah yang sama tetapi kesalahan yang saya dapatkan tidak ada di versi ... lihat kesalahannya seperti di bawah ini:> Kesalahan fatal: Memanggil ke fungsi anggota getProductAttribute () pada> non-objek di > /home/shopk3if/public_html/app/design/frontend/base/default/template/catalog/product/price.phtml> di jalur 50 tolong bantu saya untuk kode karena saya bukan pengembang ...
Apakah Anda yakin kompilasi dimatikan?
brentwpeterson
@MichaelvanEijden Apakah Anda dapat melacak penyebab utama ini?
Alan Storm
1
@AlanStorm Untuk beberapa alasan, hanya ada sebagian file yang ditransfer saat peningkatan. Jawaban Anda membawa saya ke tempat yang tepat. Terima kasih!
Michael
Saya memiliki masalah yang sama ..... tapi saya sekarang mencoba untuk menimpa semua file dengan isi arsip instalasi ZIP magento .... tapi itu tidak membantu. Itu akan menjadi sesi debug loooong! TIDAK ada pembaruan Magento hingga sekarang berfungsi untuk saya tanpa masalah!
cljk

Jawaban:

5

Melihat garis 165

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

Metode _getRequestRewriteControllerharus mengembalikan objek. Untuk beberapa alasan, itu tidak mengembalikan objek di sistem Anda.

Melihat definisi metode itu, kita melihat yang berikut ini

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

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

Mage melihat global/request_rewrite/modelnode konfigurasi untuk menemukan alias kelas. Dalam sistem toko ini seharusnya

core/url_rewrite_request

Yang Magento kemudian gunakan untuk instantiate model. Dua tebakan saya adalah

  1. Ada modul dengan nama kelas yang berbeda dan tidak valid di sini, yang mencegah Magento dari instantiating objek.

  2. Sistem Anda tidak memiliki Mage_Core_Model_Url_Rewrite_Requestfile kelas (at app/code/core/Mage/Core/Model/Url/Rewrite/Request.php), yang baru di Magento 1.8

Alan Storm
sumber
1
Juga, lihat jawaban / komentar dari @navotjer di bawah ini.
Alan Storm
7

Saya memiliki masalah yang sama, dan selain membersihkan cache, saya harus mengatur izin folder pada / var dan subdirektori ke 777 (jangan khawatir, file .htaccess di / var mencegah semuanya terbaca "manusia").

navotjer
sumber
1
Berlari ke dalamnya hari ini dan berikan jawaban untuk jawaban ini - tanpa mengindahkan basis kode Magento baru dapat mengubah izin pada varfolder Anda , yang berarti Magneto dapat kembali ke folder sistem var yang memiliki konfigurasi cache lama.
Alan Storm
+1 Anda menyelamatkan hari saya! Sedang memutakhirkan dari 1.6.0.1 ke 1.9.0.1
toesslab
2

Jika Anda memiliki server cache seperti memcached, coba restart juga. Saya memiliki masalah yang sama dan saya menyelesaikannya dengan cara ini.

cavbleu
sumber
Atau jika Redis:redis-cli flushall
kiat
2

Bersihkan cache redis;

redis-cli

FLUSHALL

Ini memecahkan masalah.

Knase
sumber
2

Saya mencoba mengikuti penjelasan oleh @AlanStorm, tetapi akhirnya menemukan itu adalah masalah caching. Saya hanya perlu rm -rf *semua file ~/public_html/var/cachedan saya menemukan bahwa situs dimuat dengan benar.

pengguna3604
sumber
Sederhana seperti ini. Saya memiliki masalah yang sama ketika memutakhirkan dari 1,7 ke 1.9, tetapi lupa untuk menghapus folder cache.
Ricardo Martins
1

Saya memiliki masalah yang sama

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

Menghapus semua di / var / cache memecahkan masalah

Krysis
sumber
0

Menghapus semua yang ada di var / cache memecahkan masalah untuk saya juga.

Juga harus menghapus file maintenance.flag sebelum masalah ini terjadi, karena ada halaman pemeliharaan.

kelly
sumber