web-dev-qa-db-fra.com

Mettre à jour manuellement Joomla 3.5+ vers la dernière version

J'ai une installation Joomla, version 3.5+, mais je ne peux pas mettre à jour, peu importe ce que j'ai essayé. J'ai essayé d'utiliser le composant Joomla Update, j'ai essayé de télécharger le paquet, cela ne fonctionne tout simplement pas.

J'ai ensuite essayé d'extraire le paquet sur le répertoire racine et cela a cassé mon site.

Comment puis-je le mettre à jour manuellement?

3
mavrosxristoforos

Michael Babker a fourni un script de mise à jour post-manuel à l'adresse https://Gist.github.com/mbabker/d7bfb4e1e2fbc6b7815a733607f89281 , qui exécute les étapes normalement effectuées après les mises à jour du système de fichiers.

Ce script est conçu pour être exécuté une fois que vous avez extrait manuellement le package de mise à jour sur votre site.

Comme toujours, vous devez exécuter une sauvegarde de votre site Web avant de tenter une mise à jour majeure comme celle-ci.

Vous trouverez ci-dessous la copie actuelle du code, mais comme la page liée peut être mise à jour ultérieurement, assurez-vous de vérifier que vous utilisez la dernière version.


postupdate.php fichier au 15 septembre 2019:

<?php
/**
 * @package    Joomla.Administrator
 *
 * @copyright  Copyright (C) 2016 Open Source Matters, Inc. All rights reserved.
 * @license    GNU General Public License version 2 or later; see LICENSE.txt
 */
/**
 * Define the application's minimum supported PHP version as a constant so it can be referenced within the application.
 */
define('JOOMLA_MINIMUM_PHP', '5.3.10');
if (version_compare(PHP_VERSION, JOOMLA_MINIMUM_PHP, '<'))
{
    die('Your Host needs to use PHP ' . JOOMLA_MINIMUM_PHP . ' or higher to run this version of Joomla!');
}
/**
 * Constant that is checked in included files to prevent direct access.
 * define() is used in the installation folder rather than "const" to not error for PHP 5.2 and lower
 */
define('_JEXEC', 1);
// Load the administrator application's path constants
if (file_exists(__DIR__ . '/defines.php'))
{
    include_once __DIR__ . '/defines.php';
}
if (!defined('_JDEFINES'))
{
    define('JPATH_BASE', __DIR__);
    require_once JPATH_BASE . '/includes/defines.php';
}
require_once JPATH_BASE . '/includes/framework.php';
require_once JPATH_BASE . '/includes/helper.php';
// Account for moved JToolbarHelper class in 3.9
if (file_exists(JPATH_BASE . '/includes/toolbar.php'))
{
    require_once JPATH_BASE . '/includes/toolbar.php';
}
else
{
    require_once JPATH_BASE . '/includes/subtoolbar.php';
}
// Boot JApplicationAdministrator so the application references in the factory resolve correctly.
JFactory::getApplication('administrator');
// Set the component path (un)constants
define('JPATH_COMPONENT', JPATH_ADMINISTRATOR . '/components/com_joomlaupdate');
define('JPATH_COMPONENT_ADMINISTRATOR', JPATH_ADMINISTRATOR . '/components/com_joomlaupdate');
define('JPATH_COMPONENT_SITE', JPATH_SITE . '/components/com_joomlaupdate');
// Load the update component's model to run the cleanup methods
JModelLegacy::addIncludePath(JPATH_COMPONENT_ADMINISTRATOR . '/models', 'JoomlaupdateModel');
/** @var JoomlaupdateModelDefault $model */
$model = JModelLegacy::getInstance('default', 'JoomlaupdateModel');
// Make sure we got the model
if (!($model instanceof JoomlaupdateModelDefault))
{
    echo 'Could not load update component model, please check the logs for additional details.' . PHP_EOL;
    exit(1);
}
// Load up the logger
JLog::addLogger(
    array(
        'format'    => '{DATE}\t{TIME}\t{LEVEL}\t{CODE}\t{MESSAGE}',
        'text_file' => 'joomla_update.php',
    ),
    JLog::INFO,
    array('Update', 'databasequery', 'jerror')
);
JLog::add('Starting manual update using postupdate', JLog::INFO, 'Update');
// Load the Joomla library and update component language files
JFactory::getLanguage()->load('lib_joomla');
JFactory::getLanguage()->load('com_joomlaupdate');
JLog::add(JText::_('COM_JOOMLAUPDATE_UPDATE_LOG_FINALISE'), JLog::INFO, 'Update');
// Finalize the update
if ($model->finaliseUpgrade() === false)
{
    echo 'Failed to finalize the upgrade, please check the logs for additional details.' . PHP_EOL;
    exit(1);
}
JLog::add(JText::_('COM_JOOMLAUPDATE_UPDATE_LOG_CLEANUP'), JLog::INFO, 'Update');
// Cleanup after the update
$model->cleanUp();
JLog::add(JText::sprintf('COM_JOOMLAUPDATE_UPDATE_LOG_COMPLETE', JVERSION), JLog::INFO, 'Update');
JLog::add('Finished manual update using postupdate', JLog::INFO, 'Update');
echo 'Update to ' . JVERSION . ' completed successfully.' . PHP_EOL;
3
Neil Robertson

De nombreux posts disent qu'il ne faut pas mettre à jour manuellement Joomla 3.5+. Et il y a plusieurs raisons pour lesquelles c'est un bon conseil.

Cependant, vous pouvez mettre à jour manuellement Joomla 3.5+ vers la dernière version (actuellement 3.8.8).

1. Sauvegarde d'abord

Tout d’abord, vous devez disposer d’une bonne sauvegarde de votre site actuel. Les choses peuvent mal se passer.

2. Connectez-vous à l'administrateur

Il est important que l'administrateur du site ait une session active pendant qu'il fonctionne encore, sinon l'étape 4 risque de ne pas fonctionner.

3. Extraire les fichiers

Vous pouvez télécharger le dernier package de mise à niveau Joomla à partir de votre composant Joomla Update (Components > Joomla Update), ou de downloads.joomla.org .

Renommez votre répertoire libraries en libraries-old.

Placez le package que vous avez téléchargé dans le répertoire racine de votre site. Extrait.

Si vous ouvrez votre ordinateur et obtenez une erreur ou une page vierge, vous pouvez essayer de renommer à nouveau le répertoire libraries en libraries-broken et copiez un répertoire libraries directement à partir de la dernière version du package complet .

4. Fixer la base de données

Si vous avez bien réussi jusqu'ici, votre administrateur devrait être cassé. Sinon, bravo! Aller à Extensions > Manage > Database et cliquez sur le bouton Fix.

Si votre administrateur est cassé, copiez le lien suivant après l'URL de l'administrateur de votre site:

[your site]/administrator/index.php?option=com_installer&view=database&task=database.fix

Si vous cliquez sur ce lien, la base de données devrait être automatiquement corrigée et votre administrateur sera à nouveau utilisable. Cliquez sur Fix une fois de plus.

Votre site devrait maintenant avoir la dernière version de Joomla. Si vous rencontrez toujours des problèmes, vous devrez peut-être mettre à jour des extensions tierces ou similaires.

3