web-dev-qa-db-ja.com

3.7.3への更新後にクラス「JInput」が見つかりません

クライアントサイトを3.7.3に更新しています。更新後、フロントエンドと管理者の両方で以下を受け取ります。

致命的なエラー:クラス 'JInput'が/home/wwwsitew/public_html/rmi/libraries/joomla/application/web.phpの149行目に見つかりません

これは{ $this->input = new JInput; }を参照します

次の関数では:

public function __construct(JInput $input = null, Registry $config = null, JApplicationWebClient $client = null)
    {
        // If an input object is given use it.
        if ($input instanceof JInput)
        {
            $this->input = $input;
        }
        // Create the input based on the application logic.
        else
        {
            $this->input = new JInput;
        }

        // If a config object is given use it.
        if ($config instanceof Registry)
        {
            $this->config = $config;
        }
        // Instantiate a new configuration object.
        else
        {
            $this->config = new Registry;
        }

        // If a client object is given use it.
        if ($client instanceof JApplicationWebClient)
        {
            $this->client = $client;
        }
        // Instantiate a new web client object.
        else
        {
            $this->client = new JApplicationWebClient;
        }

        // Load the configuration object.
        $this->loadConfiguration($this->fetchConfigurationData());

        // Set the execution datetime and timestamp;
        $this->set('execution.datetime', gmdate('Y-m-d H:i:s'));
        $this->set('execution.timestamp', time());

        // Setup the response object.
        $this->response = new stdClass;
        $this->response->cachable = false;
        $this->response->headers = array();
        $this->response->body = array();

        // Set the system URIs.
    }

私はGoogleで何か関連するものを見つけることができないようです、問題が何であるかについて誰かが何か考えを持っていますか?


更新:3.7.3の完全なコピーをダウンロードし、/ libraries/joomla/application/web.phpとlibraries/joomla/input/input.phpの両方をアップロードしましたが、フロントエンドと管理者の両方で404エラーが発生しますページ...


Update2:DBが3.7.0で実行されているようです。DBを「修正」しようとすると、次の問題が表示されますが、ボタンをクリックしても修正されません。

テーブル 'uh46v_session'には、タイプtinyint(3)の列 'client_id'がありません。 (ファイル3.7.0-2016-10-02.sqlから。)テーブル 'uh46v_ucm_content'には、タイプint(10)の列 'core_content_item_id'がありません。 (ファイル3.7.0-2017-01-08.sqlから。)テーブル 'uh46v_ucm_content'には、タイプint(10)の列 'asset_id'がありません。 (ファイル3.7.0-2017-01-08.sqlから。)テーブル 'uh46v_ucm_content'には、タイプint(10)の列 'core_type_id'がありません。 (ファイル3.7.0-2017-01-08.sqlから。)テーブル「uh46v_languages」には、タイプint(10)の列「asset_id」がありません。 (ファイル3.7.0-2017-03-03.sqlから。)テーブル 'uh46v_menu_types'には、タイプint(10)の列 'asset_id'がありません。 (ファイル3.7.0-2017-03-03.sqlから。)

以前のJoomlaバージョン、つまり3.6、3.7、および現在のバージョンである3.5.1の再インストールを手動で更新しようとしました-サイトの所有者が更新またはロールバックしようとしたときに何かが破損しているのではないかと思いますか?


更新3:Joomla FPAを実行しました。完全な詳細は次のとおりです こちら

更新4:まだ運がない、Akeeba以外のコアEXTは削除されていない。追加の詳細がいくつかあります ここ

私はまだ調査中ですが、どんな提案も歓迎します。


よろしく

5
Dtorr1981

それはあなたのJoomlaのようです!インスタンスが破損しています。 Joomla管理ツールを使用しても再インストールはできないため、完全なJoomlaを実行することをお勧めします!コアの手動再インストール/パッケージ交換。

注:これはおそらく、デスクトップ上のWebサイトのローカルクローンでうまく機能します。一般に、ライブWebサイトでこれを直接行うことは避けてください。

新鮮なJoomlaを作成してください!既存のWebサイトのコア:

  • Joomlaをダウンロードしてください! joomla.orgのバージョン(3.7.3)完全安定パッケージ

  • 解凍します

  • すべてのJoomlaの置き換えを開始します!インスタンスのコア。

  • サイトクローンと解凍された新しいJoomlaパッケージが存在する2つのフォルダーを並べて開きます。

管理者サイト

各管理サイトのサブフォルダに移動します。

a。コンポーネント、モジュール、フォルダーを含む

  • すべてを選択して、新しいJoomla!から*サブフォルダー/サブコンテンツをコピーしてください!上記のフォルダのうち、あなたのサイトに貼り付けます。既存のアイテムを置き換えます。

    *サブフォルダー=各コアコンポーネント、モジュールフォルダー、およびファイル-スクリーンショットを参照

    Selecting all admin components

b。ヘルプ、マニフェスト、言語フォルダー

  • これらのフォルダーについては何も置き換える必要がない可能性がありますが、その場合は、サブフォルダーのコンテンツを選択し、サイトのインスタンスにコピーして貼り付けます。 (たとえば、言語の場合は、コアen-EN言語フォルダーの内容をコピーしてサイトに貼り付けます-既存のものを置き換えます)。

c。テンプレート

  • テンプレートの上書きがない限り、テンプレートフォルダ全体をコピーして貼り付けることができます。オーバーライドがある場合は、テンプレートを置き換える前にオーバーライドをどこかに保存し、新しいテンプレートの以前の場所に再度配置します。

フロントエンドサイト

各サイトサブフォルダーに移動します。

a。 bin、cli

  • すべてを選択し、これらのフォルダのファイルを新しいJoomla!からコピーします。上記のフォルダのうち、サイトのインスタンスに貼り付けます。既存のアイテムを置き換えます。

b。含む、レイアウト

  • フォルダ全体をコピーして、サイトのインスタンスで置き換えます。

c。コンポーネント、ライブラリ、メディア、モジュール

  • これらのフォルダー(各モジュール、コンポーネントなどの1つ)のサブフォルダー/コンテンツをコピーして、サイトのインスタンスで置き換えます。

d。言語とテンプレート

  • 各プラグインのフォルダーに移動し、そこに存在するサブフォルダーをコピーします。 joomlaサイトインスタンスで同じ名前のアイテムを置き換えます。

e。プラグイン

  • 管理サイトの説明と同様です。サードパーティのテンプレートを使用している場合は、新しいフォルダーから、フォルダー全体ではなく、テンプレートフォルダーに存在する各サブフォルダーのみをコピーする必要があることに注意してください。

結論-覚えておくべきこと:

  • 上記では、サードパーティのファイルを削除せずに、既存のJoomlaサイトのコアJoomlaファイルを完全に置き換える方法を簡単に説明しました。
  • この一般的なアプローチにより、Joomlaコア全体が確実に存在するようになります。
  • もちろん、Joomlaのバージョンを一致させることをお勧めします。
  • 既存のサイトのコア上の他の特定のカスタマイズ/オーバーライド/パッチは削除されます。
  • サードパーティの拡張機能がなく、他のファイルがウェブサイト全体または部分的にサブフォルダーに存在する場合。プラグインフォルダーの場合、親フォルダー全体を置き換えることができます。
  • 常にバックアップをとってください-ライブのウェブサイトでそのようなタスクを行うことは避けてください。
  • 変更をテストするときは、キャッシュをクリアすることを忘れないでください。
  • 何らかの理由でJoomlaのインストールが失敗した場合、おそらく1つ以上の破損したファイルが含まれている可能性があるため、この方法で完全なコアの再インストールを説明/提案しています。ただし、誰かがJoomlaパッケージ全体の部分的な置き換えを行って、特定の問題が解決されているかどうかを確認するために各ステップを試すことができます。

追加のヒント

新しいJoomlaからサイトへのコピー/貼り付け/置換中に、既存のサイトフォルダーの一部を一時的に名前を変更して保存しておくと、それらを置き換える(削除する)のではなく、便利で時間を節約できる場合があることがわかりました。現在の作業環境でそれらへの参照を維持します。既存のサイトを再ダウンロード/再解凍/再作成する必要はありません。フォルダの名前を簡単に変更して、2つのバージョンを切り替えることができます。

1
FFrewin