致命的なエラー:アップグレード後、非オブジェクトでメンバー関数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これの根本原因を突き止めることができましたか?
アランストーム

1
@AlanStorm何らかの理由で、アップグレード中に転送されたファイルの一部しかありませんでした。あなたの答えは私を正しい場所に連れて行きました。ありがとう!
マイケル

私は同じ問題を抱えています.....しかし、今ではすべてのファイルをmagentoのZIPインストールアーカイブの内容で上書きしようとしましたが...助けにはなりませんでした。これは、デバッグセッションになります!これまでのところ、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

その後、Magentoはモデルのインスタンス化に使用します。私の2つの推測は

  1. ここには、異なる無効なクラス名を持つモジュールがあり、Magentoがオブジェクトをインスタンス化することを防ぎます。

  2. システムにMage_Core_Model_Url_Rewrite_Requestクラスファイル(at app/code/core/Mage/Core/Model/Url/Rewrite/Request.php)がありません。これはMagento 1.8の新機能です


1
また、以下の@navotjerからの回答/コメントを参照してください。
アランストーム

7

同じ問題があり、キャッシュをクリアするだけでなく、/ varおよびサブディレクトリのフォルダーのアクセス許可を777に設定する必要がありました(/ varの.htaccessファイルにより、すべてが「人間」に読めるようになります)。


1
今日これに走り、この答えを支持します。新しいMagentoコードベースを展開すると、varフォルダーのアクセス権が変更される可能性があります。つまり、Magnetoは古いキャッシュ構成のシステムvarフォルダーに戻る可能性があります。
アランストーム

+1あなたは私の一日を救った!1.6.0.1から1.9.0.1にアップグレードしていた
toesslab

2

memcachedのようなキャッシュサーバーがある場合は、同様に再起動してみてください。私は同じ問題を抱えており、この方法で解決しました。


または、Redisの場合:redis-cli flushall
kiatng

2

Redisキャッシュをクリアします。

redis-cli

FLUSHALL

その解決された問題。


2

@AlanStormの説明に従うことを試みましたが、最終的にはキャッシュの問題であることがわかりました。rm -rf *すべてのファイルを入力するだけ~/public_html/var/cacheで、サイトが正しく読み込まれたことがわかりました。


このようにシンプル。1.7から1.9にアップグレードするときに同じ問題が発生しましたが、キャッシュフォルダーをクリアするのを忘れていました。
リカルドマーティンズ

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.