Manuale:Aggiornare

From mediawiki.org
This page is a translated version of the page Manual:Upgrading and the translation is 37% complete.

Concetti di base

Trasferimento di file

Scegli un metodo per trasferire i file:

Preliminari

Leggi il file di testo dell'AGGIORNAMENTO incluso in MediaWiki.

  1. Controlla i requisiti
  2. Leggi il file RELEASE-NOTES
  3. Leggi il file UPGRADE
  4. Fai un back up dei file esistenti e dei database
  5. Spacchetta i nuovi file
  6. Aggiorna le estensioni
  7. Esegui lo script di aggiornamento per controllare il database
  8. Verifica l'aggiornamento
  9. Elimina i residui di vecchie installazioni

Controlla i requisiti

Attenzione Attenzione: MediaWiki from 1.32 to 1.35.4, 1.36.2, 1.37.0 contain a security issue that allow unprivileged editing of arbitrary page and arbitrary JavaScript execution. If you are using one of these versions and can not upgrade to a newer version, please see 2021-12 security release/FAQ for a workaround.
Attenzione Attenzione: Do not upgrade from a MediaWiki version older than 1.33 to MediaWiki 1.39.1, or you may lose data! Upgrade to MediaWiki 1.35 first. See task T326071.

MediaWiki 1.41 richiede:

  • PHP 7.4.3+
  • Uno dei seguenti:
    • MariaDB 10.3.0+
    • MySQL 5.7.0+
    • PostgreSQL 10.0+
    • SQLite 3.8.0+
Dalla versione 1.36, MediaWiki si impegna a supportare solo gli aggiornamenti da due versioni LTS precedenti (vedi phab:T259771). Gli aggiornamenti da versioni precedenti di MediaWiki dovranno essere eseguiti in più fasi. Ciò significa che se volete aggiornare alla 1.41 dalla 1.34 o da una versione precedente, dovrete prima aggiornare il vostro wiki 1.34 alla 1.35 (o 1.39) e, dalla 1.35 (o 1.39), sarete in grado di passare alla 1.41.

Se stai usando PostgreSQL, leggi anche Manual:Upgrading Postgres .

Per maggiori informazioni, leggi Manual:Installation requirements/it e Compatibilità .

Leggi le note di rilascio

All'interno dei files tarball che vengono distribuiti, o nella lista dei files verificati/esportati dalle Git, troverai alcuni files con il nome tutto in lettere maiuscole. Uno di questi contiene le note sulle modifiche: RELEASE-NOTES (wiki). Ora è il momento di aprirlo e vedere cosa è stato modificato in questa versione. Dovresti anche leggere le istruzioni nel file UPGRADE.

Eliminare i lavori in sospeso

Per problemi di performance, alcune azioni nel database vengono differite, e vengono gestite dalla coda dei lavori. Questi lavori vengono memorizzati nel database e contengono i parametri con le informazioni sulle azioni che devono essere effettuate. E' fortemente raccomandato di terminare questi lavori in sospeso prima di aggiornare il wiki, per evitare che fallisca nel caso in cui le specifiche dei parametri di questi lavori cambino nella nuova versione. Utilizzare runJobs.php per avviare tutti i lavori pendenti e pulire la coda dei lavori prima di effettuare l'aggiornamento.

Backup dei files esistenti e del database

Istruzioni complete: Manuale:Fare una copia di sicurezza di una wiki

Mentre gli script di aggiornamento sono ben mantenuti e robusti, le cose potrebbero ancora andare storte. Prima di procedere all'aggiornamento dello schema del database, crea un backup completo del wiki, includendo sia il database che i files:

  • il contenuto del wiki, dal database, (assicurati di avere il set di caratteri specificato correttamente, prima controlla LocalSettings.php). Potrebbe essere una buona idea creare un dump XML oltre al dump del database SQL.
  • MySQL, sia dump SQL che dump XML sono utilizzabili con il comando mysql:
mysqldump --user=wikidb_user --password=wikidb_userpassword wikidb > file.sql
mysqldump --user=wikidb_user --password=wikidb_userpassword wikidb --xml > file.xml
  • PostgreSQL, dump del database da utilizzare con il comando pg_restore:
pg_dump --create -Fc wikidb > file.db.dump
  • SQLite, usa uno script MediaWiki per fare un backup:
php wikifolder/maintenance/sqlite.php --backup-to file
  • immagini e altri file multimediali (il contenuto della directory images, logo personalizzato /skins/common/images/wiki.png)
  • file di configurazione, ad es. LocalSettings.php e .htaccess (se presente)
  • I file di programma di MediaWiki, comprese tutte le skin e le estensioni, specialmente se li hai modificati.

Spacchetta i nuovi files

Utilizzando un pacchetto tarball

Puoi mettere i nuovi file in posizione usando FTP o la riga di comando. Usa la riga di comando, se hai accesso ad essa! L'utilizzo della riga di comando sarà molto più veloce di dover caricare ognuno dei migliaia di file tramite FTP.

Dovresti mettere il tarball decompresso in una nuova cartella vuota sul tuo server. Se invece estrai la nuova versione direttamente sulla tua vecchia versione, piuttosto che in una nuova directory, dovresti seguire le istruzioni descritte in Backup dei file esistenti e del database: altrimenti, se hai hai apportato delle personalizzazioni che potresti eliminarle in un modo che ti lascia senza riferimenti per riapplicarle. Estrarre un tarball sopra la tua copia live di MediaWiki può anche lasciare dei file della vecchia versione di MediaWiki che potrebbero interferire con il codice aggiornato. Si consiglia di decomprimere i nuovi file in una nuova directory e quindi applicare le personalizzazioni alla nuova directory (ripristino LocalSettings.php, cartella immagini, estensioni e altre personalizzazioni come skin personalizzate)

FTP o grafico

Se non riesci ad accedere alla riga di comando sul tuo server, scarica il tarball MediaWiki sul tuo computer locale e usa 7zip per estrarre il tarball sul tuo PC locale.

Dopo aver estratto i file localmente, utilizzare il software client FTP preferito per caricare directory e file sul server.

Gestore File cPanel

cPanel è una interfaccia popolare fornita da diversi ambienti di hosting. Questo metodo è efficiente perché i file vengono decompressi dallo stesso server.

  • Naviga verso la cartella madre che contiene la cartella chiamata "wiki".
  • Carica il file mediawiki-1.xx.x.tar.gz. Potresti aver bisogno di cliccare "Ricarica" per vederlo.
  • Estrai il file mediawiki-1.xx.x.tar.gz. Ricarica ancora.
  • Conferma che la cartella mediawiki-1.xx.x sia presente.
  • Elimina il file tar.gz.
  • Copia tutte le skin, estensioni, cartelle delle immagini, personalizzazioni, e LocalSettings.php dentro la nuova cartella. (Vedo sotto.)
  • Quando si è pronti per lanciare update.php, rinomina la tua vecchia cartella wiki e la tua nuova cartella wiki. (e.g. "w" diventa "w1.34" e poi "mediawiki1.35.0" diventa "w".) Questo passaggio è facilmente reversibile nel caso si arrivi ad avere problemi.

Linea di comando

Potrebbe essere necessario eseguire il comando come sudo se non si dispone di autorizzazioni di scrittura complete per le directory di installazione wiki dell'utente corrente. Mentre si estrae un pacchetto di tarball normalmente verrà creata una nuova directory per la nuova versione wiki e sarà necessario copiare i vecchi file di configurazione e la directory delle immagini dalla vecchia directory di installazione:

cd /path/to/your/new/installation/ wget https://releases.wikimedia.org/mediawiki/1.41/mediawiki-1.41.1.tar.gz tar xvzf mediawiki-1.41.1.tar.gz rm mediawiki-1.41.1.tar.gz

Gli utenti di (Open)Solaris dovrebbero usare gtar, o:

$ gzip -dc mediawiki-1.41.1.tar.gz | tar xf -

Altri file

Dopo aver estratto il tarball, è necessario copiare o spostare alcuni file e cartelle dalla vecchia directory di installazione a quella nuova:

  • LocalSettings.php - contiene le tue vecchie impostazioni di configurazione.
  • La directory images (o uploads nelle versioni precedenti), che contiene tutti i file caricati sul wiki, a meno che tu non abbia scelto una directory di caricamento diversa e ne cambi la proprietà e le autorizzazioni. find ./images -type d -exec chmod 755 {} \; e chgrp -R apache images (ad esempio se il tuo utente web è apache).
  • Alcune estensioni nella directory extensions. Dovresti sempre ottenere le estensioni aggiornate; le vecchie estensioni non sono garantite per funzionare con una versione più recente di MediaWiki.
  • Nel caso in cui si usi logo personalizzato, questo file deve anche essere ripristinato dal backup. Prima della versione 1.24 di solito in skins/common/images/. Dopo la 1.24 in resources/assets/ o images/ se è quello che hai scelto di usare. Quindi aggiungere a LocalSettings.php, ad es. $wgLogo = "$wgScriptPath/images/logo.png";
  • Per 1.35 potresti aver bisogno di ripristinare i loghi da wgLogos . Poi aggiungili a LocalSettings.php e.g. $wgLogos = [ '1x' => "path/to/1x_version.png", '2x' => "path/to/2x_version.png", 'svg' => "path/to/svg_version.svg" ];
  • Skin personalizzati all'interno della directory skins.
  • Qualsiasi modifica apportata ai vecchi file di installazioni o alle estensioni.
  • Qualsiasi file .htaccess (se stai usando Apache e hai definito delle regole al loro interno).

Una volta terminato, crea questa nuova cartella come la cartella pubblicata sul server web, o rinomina la vecchia directory di installazione e quindi rinomina quella nuova per farla corrispondere al vecchio nome. Change ownership and group of everything so the web server has access to the files.

Utilizzando Git

Se usi Git , esporta i file in una cartella vuota e poi copia i vecchi file personalizzati nella nuova cartella come descritto nella sezione precedente.

You will also need to install some external PHP libraries using Composer or a provided collection maintained for the Wikimedia wiki farm. More details on installing and updating external libraries can be found in the Git download documentation.

Using patch

A small patch file is usually made available for a minor version upgrade. You'll need to download patch to use this. Manually download and extract the patch file from the dumps site or follow the directions with wget below. Patches are incremental, you can not skip a version.

  1. cd to your main MediaWiki directory (the one with LocalSettings.php).
  1. Download the patch file and gunzip it.
  1. Use patch -p1 --dry-run to check what will be changed (e.g., patch -p1 --dry-run -i mediawiki-x.xx.x.patch)
  1. If all is well, run patch again without --dry-run.
  1. Check your Special:Version and you should see the new version number in place.

Files remaining that may cause errors

If you unpacked over the old installation directory, some old files can cause problems with the new version.

Upgrade extensions

Certain extensions have been updated in order to work with the new version of MediaWiki. Be sure to upgrade to the latest versions of such extensions. You might need to perform manual updates to custom extensions.

Different tarballs include some subsets of extensions and have versioning which helps you upgrade choosing the right one for your MediaWiki core release.

Extension Distributor works well for most people who want a snapshot of extensions that will work with their supported versions of MediaWiki.

If you want a lot of extensions then downloading from Git is probably best. If you don't have Git but you want to upgrade a lot of extensions, you might consider using mwExtUpgrader.

Adapt your LocalSettings.php

If you use the same LocalSettings.php from the old version, you may need to adapt it to how new versions handle it:

Skin registration

Versione MediaWiki:
1.24

Since MediaWiki 1.24, bundled skins like Vector, Monobook, Modern and CologneBlue are no longer part of MediaWiki core, and they need to be registered explicitly in LocalSettings.php to use them, otherwise MediaWiki will warn that you don't have installed skins.

This is what you need to add to LocalSettings.php when upgrading from versions older than 1.24 and want to have available one of those skins:

wfLoadSkin( 'Vector' );
wfLoadSkin( 'MonoBook' );
wfLoadSkin( 'Modern' );
wfLoadSkin( 'CologneBlue' );

Other skins may still not be adapted to the new skin registration system, so refer to the documentation page about each skin to see how to register it properly in case of problems.

Extension registration

Versione MediaWiki:
1.25

Since MediaWiki 1.25, extensions use a new extension registration system.

Previously your LocalSettings.php would include something like:

require_once "$IP/extensions/Cite/Cite.php";
require_once "$IP/extensions/Gadgets/Gadgets.php";
require_once "$IP/extensions/ImageMap/ImageMap.php";
require_once "$IP/extensions/InputBox/InputBox.php";
require_once "$IP/extensions/Nuke/Nuke.php";
require_once "$IP/extensions/ParserFunctions/ParserFunctions.php";
require_once "$IP/extensions/Poem/Poem.php";
require_once "$IP/extensions/SyntaxHighlight_GeSHi/SyntaxHighlight_GeSHi.php";
require_once "$IP/extensions/WikiEditor/WikiEditor.php";

This can be converted to:

wfLoadExtension( 'Cite' );
wfLoadExtension( 'Gadgets' );
wfLoadExtension( 'ImageMap' );
wfLoadExtension( 'InputBox' );
wfLoadExtension( 'Nuke' );
wfLoadExtension( 'ParserFunctions' );
wfLoadExtension( 'Poem' );
wfLoadExtension( 'SyntaxHighlight_GeSHi' );
wfLoadExtension( 'WikiEditor' );

Extensions are being adapted to use the new extension registration system. Extensions that are not adapted should use the old way of installing them. Refer to the installation instructions on the extension's page for more information.

Remove DefaultSettings.php line (if necessary)

Older versions of MediaWiki automatically generated a line in LocalSettings.php calling DefaultSettings.php . As of Version 1.38, this line is deprecated and does not work with many extensions. It needs to be removed.

Delete the following line:

require_once( "$IP/includes/DefaultSettings.php" );

Other variables

Some variables may be obsolete or even removed. Having them in LocalSettings.php usually won't have any effect. New variables may be added in newer versions, or some existing variables changed their type. We usually try to use sane defaults for them, and in case of type change, be backward compatible. In any case, take a look at the release notes to see those changes.

Run the update script

You can upgrade the MediaWiki database in two ways: Either from the command line or from the web browser. If you have shell access to your server, upgrading from the command line is recommended, since this reduces the risk of the upgrade process being interrupted by a timeout or connection reset.

The script will also notify you if any of MediaWiki core's PHP dependencies are out of date.

Command line

Access the command line of your server or an SSH shell or similar. You can access the command line by connecting to your server via SSH. If the local PC you are working on runs Microsoft Windows, you will need a tool like PuTTY to use SSH. From the command line or the Shell, execute the update script:

Versione MediaWiki:
1.40
$ php maintenance/run.php update.php
Versione MediaWiki:
1.39
$ php maintenance/update.php

On a Linux server if you get an error, try performing the same command as root (by using the sudo command). Note for simple installations on Windows (e.g. with XAMPP ): First make sure that your web server (such as Apache) and your database (such as MySQL) are running. Then run update.php: right-click it, select Open With, and browse to PHP.exe. The resulting command prompt window will likely autoclose when the schema upgrade completes.

MediaWiki will inspect the existing schema and update it to work with the new code, adding tables and columns as needed.

If you use a Shared database, you should pass the --doshared parameter if you want the shared tables to be updated. Otherwise, they won't be touched by the update script.

What to do if it says "MediaWiki requires PHP x.y.z or higher; you are using PHP x.w.v"

See Manual:Common errors and symptoms#MediaWiki requires PHP 7.4.3 or higher; you are using PHP 7.3.17

What to do if php update.php fails to do anything, resulting in a quick pause and then return to command prompt

This can be caused by a malfunctioning extension or skin.

  • Check that all extensions and skins called for in LocalSettings.php are present
  • Check that extensions are using the correct registration method (wfLoadExtension vs. require_once)
  • Comment out the first half of the extensions in LocalSettings.php.

If this causes update.php to work, uncomment half of that half (so 1/4 of the extensions). If this does NOT cause update.php to work, uncomment the first half but comment out the second half, and then comment out half of the second half, etc. Repeat until update.php works to find the one that is failing.

What to do in case of "ALTER command denied to user" error (or similar)

In case the scripts abort with a message similar to:

Error: 1142 ALTER command denied to user 'wiki'@'localhost' for table 'mytable' (localhost)
ERROR: must be the owner of the mytable relation 

This means that you should check that you have defined $wgDBadminuser and $wgDBadminpassword in your LocalSettings.php file (in the main directory). These are the user and password needed by this script in order to access to the database.

In some cases, an old $wgDBmwschema variable (for Postgres) seems to be read for the table name to update instead of $wgDBname, even when MySQL is used. If this is the case, just get rid of the $wgDBmwschema definition in LocalSettings.php.

What to do in case of 'register_argc_argv is set to false' error

You may encounter the error:

Cannot get command line arguments, register_argc_argv is set to false
  1. Go to ~/maintenance. Either edit an existing 'php.ini' file, or create one.
  1. Add a line as follows:
register_argc_argv=true
  1. Re-run php update.php

Web browser

Versione MediaWiki:
1.17
See also update.php

If your database is already big and in high production usage, then you should not be using the Web updater, e.g. because the update process will time out when the maximum_execution_time is reached. In that case you should use update.php from the command-line interface (not from the web). What exactly is "too big" depends on your server (e.g. on its performance, the load and on how long the maximum execution time of PHP allows the script to run). If your wiki is too big for the web updater and your hosting provider does not allow command-line access, then you need to migrate your wiki to another hosting account, preferably to one that does have shell access.

  1. Always back up before performing database maintenance.
  1. Navigate your web browser to /mw-config/index.php.

For example, if your wiki is at http://example.org/w/index.php, then navigate to http://example.org/w/mw-config/index.php.

  1. Select your language and click continue.
  1. The existing installation should be detected. Follow the instructions on the screen to upgrade it.
    If asked for the "upgrade key", open your LocalSettings.php file and look for the key assigned to $wgUpgradeKey .

It might happen that the web-updater does not seem to work: Instead of seeing the initial language selection screen, you might see an empty wiki page, possibly with some error message. In this case it is most likely that your web server uses Rewrite Rules (most likely for short URLs), which do not show you the updater at mw-config/, but a wiki page at Mw-config/, with capital "M". In this case, rename the .htaccess file for the time of the update. Then you should be able to access the web-updater.

Attenzione Attenzione: If you use this method, make sure to change the name of the .htaccess file back after running the upgrade script! Otherwise, short URLs and possibly other stuff will be broken!

Test the update

Once the upgrade has been completed, browse to the wiki and check that the following operations work as expected:

  • Viewing pages
  • Editing pages
  • Uploading a file
  • Visit Special:Version and check that the version shown is correct and that the extensions are present.

Remove leftovers from old installations

If you have copied your previous installation to another folder on the server, be sure to remove it or make it completely inaccessible from the web. It is very important to not leave old installations accessible from the web, since it completely defeats the purpose of upgrading, and leaves your server open to attacks.

Frequently asked questions

How hard is it to upgrade?

If the only file you have modified is LocalSettings.php , and you are upgrading from 1.5 or later, the process is very simple. The amount of human work involved is only a few minutes. The database schema changes will take an amount of time proportional to the size of your database — potentially hours for wikis with millions of pages, but for a more typical size of a few thousand pages, it is usually done in seconds.

Minor upgrades, within the same major version, say from 1.40.0 to 1.40.3, do not require any schema changes at all. You can just update the files. The database needs no update, hence it is not necessary to run the updater script.

Upgrading from 1.4 or earlier is potentially complicated because support for character sets other than UTF-8 was dropped, and the schema for storing bulk text changed. Please read the relevant section in the UPGRADE file.

Upgrading becomes difficult if you have modified our source code, and you don't want your changes to be overwritten. Tools such as diff, patch, Meld or WinMerge may be useful. There is also potential for trouble if you are using unmaintained extensions. Upgrade your extensions at the same time as you upgrade MediaWiki.

If you have modified the skin or use a custom skin, you very likely will have to adjust it to work again with the new version of MediaWiki.

Instead of patching your "global" CSS and JS (JavaScript) files every time, you can simply add the code to your MediaWiki:Common.js and MediaWiki:Common.css pages. As these are part of the database which will be reused when you upgrade, you will not have to patch the MediaWiki core files any more.

How do I upgrade from a really old version? In one step, or in several steps?

Versione MediaWiki:
1.4

It depends: If you are upgrading from MediaWiki 1.4 or older, you should upgrade to MediaWiki 1.5 first. If you are upgrading from a Latin-1 wiki, use upgrade1_5.php (found in MediaWiki 1.5) to convert the relevant parts of the database to UTF-8 ($wgUseLatin1 needs to be set to true in your LocalSettings.php for this to work). Next, run update.php, and then set the $wgLegacyEncoding option in LocalSettings.php to the encoding previously used by the wiki (e.g. windows-1252). This is basically how Wikipedia and other Wikimedia Foundation sites were upgraded from MediaWiki 1.4 to 1.5 – see some related notes at Wikitech. You may need to upgrade to MediaWiki 1.4 before running the upgrade1.5 script. If you want to make a database dump (e.g. MySQL) of your Latin-1 wiki, make sure the type of the old_text field in the text table is mediumblob, not mediumtext, to avoid character encoding issues.

Versioni di MediaWiki:
1.5 – 1.35

If you are upgrading from MediaWiki 1.5 or newer to 1.35, you can upgrade in one step, from your old version to the latest stable version. The vast majority of reports, as well as automated testing, indicate that doing it in one step works just fine. If you have trouble believing this, read this mailing list post. However, please note that when you update from old versions, chances that you will encounter PHP errors are bigger than when you upgrade from the version directly previous to the new version. You would have received these errors anyway, had you not skipped versions, but the errors would have been associated with each individual update. Instead, if you update several versions at once, you'll get the same set of errors all at the same time. This will make the upgrade more difficult, but do not forget that you did not have the trouble of updating to the intermediate versions, which you skipped!

Versione MediaWiki:
1.35

If you are upgrading to MediaWiki 1.36 or later, only upgrades from the last two LTS releases will be supported (phab:T259771). This will mean that for very old versions, that you first upgrade to MediaWiki 1.35 and then upgrade to 1.36.

Should I back up first?

Short answer: Yes.

Long answer: It depends on a) how much you value your data, b) how hard it is to create a backup and c) how confident you are with MySQL maintenance and administration.

An upgrade failure may leave your database in an inconsistent state, in between two versions. A PHP or MySQL error might happen during upgrade leaving your database partly upgraded. In such situations it may be possible to somehow fix this problem with much manual work. However, it will be way easier to just put a database backup from before running update.php in place and to continue with that. Otherwise you might have hours of - needless - work.

Recovery is often complex. Volunteers on the support forums are unlikely to be impressed if you neglect to make a backup and then need help to recover from upgrade-related corruption. A better outcome is if you can revert to your backup, and then report the bug against the corresponding MediaWiki project in the upgrade process which caused the corruption.

Can I keep my LocalSettings.php?

Yes, but you may have to make some minor changes. The format of LocalSettings.php is largely backward compatible. Changes which break LocalSettings.php compatibility will be documented in the "configuration changes" section of the release notes.

Can my wiki stay online while it is upgrading?

Generally yes, however if you upgrade via Git, Git may temporarily (for a few seconds) break it.

If you are upgrading between minor releases of MediaWiki, all you need to do is update the source files.

Note: the following assumes you have command line access. If you are upgrading between major releases of MediaWiki, the preferred procedure is as follows:

  1. Unpack the new version of MediaWiki into a new directory
  1. Prepare that new directory: copy your current LocalSettings.php from the old directory, copy any installed extensions and custom skins (if any). Check $wgLogo and $wgLogos settings in LocalSettings.php and if necessary copy logo file from the old directory to the new directory.
  1. In the release notes for the new version, see if any changes need to be made to LocalSettings.php.
  1. In the old directory, edit LocalSettings.php and insert the following code. This will place the database in read-only mode for regular wiki activity, without restricting your own update actions. Users will see the message provided if they attempt an edit during the upgrade process:
    $adminTask = ( PHP_SAPI === 'cli' || defined( 'MEDIAWIKI_INSTALL' ) );
    $wgReadOnly = $adminTask ? false : 'Upgrading to MediaWiki 1.41.1';
  1. Run the update script or the web updater in the new directory.
  1. Copy the images from the images sub-directory from the old directory to the new directory.
  1. Swap the old directory and the new directory.

(This will make the database writable again, because $wgReadOnly was only set in the old directory's LocalSettings.php.)

Why upgrade?

Subscribe to mediawiki-announce to be notified of new releases.

Recent releases receive security fixes to keep your wiki and your host safe from vandals, while old releases don't (see Ciclo di vita delle versioni ).

New major releases come with new features, which you might want to use: see the release notes for details.

See also