web-dev-qa-db-fra.com

Classe 'JInput' introuvable après la mise à jour vers 3.7.3

Je mets à jour un site client vers la version 3.7.3 et, après la mise à jour, je reçois les messages suivants à la fois sur le serveur frontal et sur l’administrateur:

Erreur fatale: La classe 'JInput' est introuvable dans /home/wwwsitew/public_html/rmi/libraries/joomla/application/web.php à la ligne 149.

Cela fait référence à { $this->input = new JInput; }

Dans la fonction suivante:

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.
    }

Je n'arrive pas à trouver quoi que ce soit dans Google. Quelqu'un a-t-il une idée de ce que pourrait être le problème?


Mise à jour: j'ai téléchargé une version complète de la version 3.7.3 et chargé à la fois /libraries/Joomla/application/web.php et libraries/joomla/input/input.php, mais je reçois maintenant une erreur 404 pour Front End et Admin. pages ....


Update2: Il semble que la base de données fonctionne à la version 3.7.0. Les problèmes suivants apparaissent lorsque vous essayez de "réparer" la base de données, mais ils ne sont pas corrigés après avoir cliqué sur le bouton:

La table 'uh46v_session' n'a pas de colonne 'client_id' de type tinyint (3). (À partir du fichier 3.7.0-2016-10-02.sql.) La table 'uh46v_ucm_content' ne contient pas la colonne 'core_content_item_id' de type int (10). (Dans le fichier 3.7.0-2017-01-08.sql.) Le tableau 'uh46v_ucm_content' ne contient pas la colonne 'asset_id' de type int (10). (À partir du fichier 3.7.0-2017-01-08.sql.) La table 'uh46v_ucm_content' n'a pas la colonne 'core_type_id' de type int (10). (Dans le fichier 3.7.0-2017-01-08.sql.) Le tableau 'uh46v_languages' ne contient pas la colonne 'asset_id' de type int (10). (Dans le fichier 3.7.0-2017-03-03.sql.) Le tableau 'uh46v_menu_types' ne contient pas la colonne 'asset_id' de type int (10). (À partir du fichier 3.7.0-2017-03-03.sql.)

J'ai essayé les mises à jour manuelles des versions antérieures de Joomla, à savoir les versions 3.6, 3.7 et la réinstallation de la version 3.5.1, qui est la version actuelle. Je suppose que le propriétaire du site a peut-être corrompu quelque chose lors de la tentative de mise à jour ou d'annulation.


Mise à jour 3: J'ai lancé le FPA de Joomla et les détails complets sont disponibles ici

Mise à jour 4: Toujours pas de chance, tous les EXT non essentiels sont supprimés à part Akeeba. Il y a quelques détails supplémentaires ici

J'enquête toujours, mais toute suggestion est la bienvenue.


Cordialement D

5
Dtorr1981

Il semble que votre Joomla! l'instance est corrompue. Étant donné que l’administration de Joomla n’aide pas à la réinstallation, je vous suggère d’effectuer une analyse complète de Joomla! Réinstallation manuelle de base/remplacement du package.

Remarque: cela fonctionnera probablement mieux dans un clone local du site Web sur votre bureau. En général, évitez de le faire directement sur le site Web en direct.

Créez un nouveau Joomla! Noyau sur un site web existant:

  • Téléchargez votre Joomla! version complète stable (version 3.7.3) de joomla.org

  • Décompressez

  • Commencez à remplacer tout ce que Joomla! noyau dans votre instance.

  • Ouvrez côte à côte les 2 dossiers où se trouvent votre site-clone et le package Joomla frais décompressé.

Site administrateur

Naviguez dans chacun des sous-dossiers du site d'administration:

a. Composants, modules, dossiers inclus.

  • Sélectionnez tout et copiez les * sous-dossiers/sous-contenus de Joomla! des dossiers ci-dessus et coller sur votre site. Laissez-le remplacer tous les éléments existants.

    * sous-dossiers = chaque composant principal, dossier de module et fichiers - voir la capture d'écran

    Selecting all admin components

b. Aide, Manifestes, Dossier Langues

  • Vous n'aurez probablement besoin de rien remplacer pour ces dossiers, mais dans ce cas, sélectionnez le contenu de leurs sous-dossiers, copiez-les et collez-les dans l'instance de votre site. (par exemple, pour les langues, copiez le contenu du dossier principal de la langue en-EN et collez-le sur votre site - remplacez les existants).

c. Modèles

  • À moins que des modèles ne soient remplacés, vous pouvez copier/coller tout le dossier des modèles. Si vous avez des remplacements, sauvegardez-les quelque part avant de remplacer les modèles et replacez-les à leur emplacement précédent sur les nouveaux modèles.

Site frontal

Naviguez dans chacun des sous-dossiers du site:

a. bin, cli

  • Sélectionnez tout et copiez les fichiers de ces dossiers à partir de fichiers Joomla! des dossiers ci-dessus, et coller à l'instance de votre site. Laissez-le remplacer tous les éléments existants.

b. Comprend, Layouts

  • Copiez tous les dossiers et remplacez-les sur l'instance de votre site.

c. Composants, bibliothèques, supports, modules

  • Copiez les sous-dossiers/contenus de ces dossiers (ceux de chaque module, composant, etc. - comme décrit pour les composants administrateur) et remplacez-les sur l'instance de votre site.

d. Langues et modèles

  • Naviguez dans le dossier de chaque plugin et copiez les sous-dossiers existants. Remplacez les éléments portant le même nom sur votre instance de site joomla.

e. Plugins

  • Similaire à celui décrit pour le site d'administration. Notez simplement que si vous utilisez des modèles tiers, vous devez alors copier du noyau nouvellement créé uniquement chaque sous-dossier existant dans le dossier des modèles, et non l'intégralité du dossier.

Conclusion - points à garder à l’esprit:

  • Ce qui précède décrit brièvement comment remplacer complètement les fichiers Joomla principaux sur un site Joomla existant - sans supprimer les fichiers tiers.
  • Avec cette approche générale, le noyau de Joomla est présent.
  • Bien sûr, il est recommandé que les versions de Joomla correspondent.
  • Les autres personnalisations/substitutions/correctifs spécifiques sur le noyau du site existant seront supprimés.
  • S'il n'y a pas d'extensions tierces et s'il existe d'autres fichiers sur l'ensemble du site ou partiellement dans des sous-dossiers, par exemple. un dossier plugins, alors tout le dossier parent peut être remplacé.
  • Toujours avoir une sauvegarde - évitez de faire de telles tâches sur le site Web en direct.
  • N'oubliez pas de vider les caches, etc., lorsque vous testez vos modifications.
  • Je décris/suggère la réinstallation complète du noyau avec cette méthode car il est probable que si une installation Joomla échoue pour une raison quelconque, celle-ci pourrait contenir plus de 1 fichiers corrompus. Cependant, quelqu'un pourrait remplacer partiellement le package Joomla et essayer à chaque étape de voir si un problème spécifique est résolu.

Conseil supplémentaire

J'ai constaté que dans certains cas, lors du copier/coller/remplacer de Joomla frais sur le site, il est utile de gagner du temps pour renommer temporairement et garder de côté certains des dossiers de sites existants - au lieu de les remplacer (ce qui les supprime) - conservez des références à celles-ci dans mon environnement de travail actuel - sans avoir à chercher à retélécharger/décompresser à nouveau le fichier/recréer le site existant. Je peux facilement renommer des dossiers et basculer entre les deux versions - ou faire des comparaisons, etc.

1
FFrewin