Manual:Upgrading/zh



概要

备份文件

选择一种方法去备份文件


 * wget
 * 使用SCP或WinSCP传输备份文件
 * SSH文件传输协议 (SFTP)
 * 使用FTP客户端.
 * 主机提供商可能有提供一个在线文件管理的网页接口；可以咨询下厂家.
 * 其他方法. 这里有包含这些协议的列表：List of file transfer protocols

准备
阅读.


 * 1) 检查需求
 * 2) 阅读发行说明
 * 3) 备份现有文件和数据库
 * 4) 解压新文件
 * 5) 升级扩展
 * 6) 运行升级脚本去升级数据库
 * 7)  测试更新

检查条件
MediaWiki 要求：


 * PHP +
 * 以下之一：
 * MySQL + （或者相同的MariaDB）
 * PostgreSQL 8.3+
 * SQLite 3.3.7+
 * Oracle 9.0.1+

如果你在使用PostgreSQL，请同时阅读.

更多信息请阅读和.

阅读版本说明
Within the distribution tarball, or within the files checked out/exported from Git, there are a number of files with capitalized filenames, one of which contains the  (wiki). 现在打开它，并看看这个版本都改变了些什么.

备份现有文件和数据库

 * Full instructions: 

While the upgrade scripts are well-maintained and robust, things could still go awry. Before proceeding to update the database schema, make a full backup of the wiki, including both the database and the files:
 * the wiki's content, from the database, (make sure you get the character set specified correctly, first check LocalSettings.php). It may be a good idea to create an XML dump in addition to the SQL database dump.
 * MySQL, both SQL dump and XML dump are for use with the  command:

mysqldump --user=wikidb_user --password=wikidb_userpassword wikidb > file.sql mysqldump --user=wikidb_user --password=wikidb_userpassword wikidb --xml > file.xml
 * PostgreSQL, database dump for use with  command:

pg_dump --create -Fc wikidb > file.db.dump
 * SQLite, you use a MediaWiki script for making a backup:

php wikifolder/maintenance/sqlite.php --backup-to file
 * images and other media files (the contents of the images directory, custom logo /skins/common/images/wiki.png)
 * configuration files, e.g. LocalSettings.php and .htaccess (if present)
 * MediaWiki's program files, including all skins and extensions, especially if you modified them.

Using a tarball package
You can put the new files into place using FTP or the command line. Use the command line, if you have access to it! Using the command line will be much faster than having to upload each single one of the thousands of files via FTP.

You should put the decompressed tarball in a new and empty folder on your server. If you instead extract the new version directly on top of your old version, rather than in a new directory, you should follow the instructions described in Back up existing files and the database: otherwise, if you've made any customizations you may erase them in a way that leaves you with no reference to re-apply them from. Extracting a tarball over top of your live copy of MediaWiki can also leave behind files from the old version of MediaWiki which may interfere with the upgraded code. It's recommended that you unpack the new files into a new directory, and then apply customizations to the new directory (restoring LocalSettings.php, images folder, extensions, and other customizations like custom skins)

FTP or graphical
If you cannot access the command line on your server, download the MediaWiki tarball to your local computer and use 7zip to extract the tarball on your local PC.

After you extracted the files locally, use your favorite FTP client software to upload directories and files to the server.

命令行
You may need to run the command as sudo if you don't have full write permissions to the wiki install directories under your current user. When untarring a tarball package normally a new directory for the new wiki version will be created and you will have to copy the old configuration files and images directory from your old installation directory:

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

(Open)Solaris用户应使用 gtar ，或：

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

其他文件
After extracting the tarball, you should copy or move some files and folders from the old installation directory to the new one: Once done, make this new folder the published folder on the web server, or rename the old installation directory and then rename the new one to match the old name.
 * , which contains your old configuration settings.
 * （或在旧版本中 ）目录，包含所有上传至wiki的文件，除非您已选择不同的上传目录，并更改所有权和权限. 和 （例如如果您的web用户是“apache”）.
 * Some extensions in the  directory. You should always get updated extensions, old extensions aren't guaranteed to work with a newer version of MediaWiki.
 * In case you use a custom logo this file also needs to be restored from backup. Before 1.24 usually in . After 1.24 in   or   if that's what you chose to use. Then add to LocalSettings.php e.g.
 * Custom skins from within the  directory.
 * Any modifications made to the old installation files or extensions.
 * Any .htaccess file (if you're using Apache and you've defined any rules in them).

使用Git
If using, export the files into a clean location, and then copy the old customized files into the new location as described in the previous section.

If you are upgrading to MediaWiki 1.25 or later, 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.

使用补丁
A small patch file is usually made available for a minor version upgrade. 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).
 * 2) Download the patch file and gunzip it.
 * 3) Use   to check what will be changed (e.g.,  )
 * 4) If all is well, run patch again without.
 * 5) 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.

If you are not using profiling, but have a  file in the MediaWiki root folder, you may receive errors referring to. Deleting, or renaming, the  file will resolve this error. The  file, also in the MediaWiki root folder, can serve as a template should you enable profiling in the future.

MediaWiki 1.23 deprecates the skin autodiscovery mechanism of core skin files. After upgrading to this version, you should ensure that the old files,  ,   and   directly in the   directory as well as the according subfolders inside the   directory got removed. MediaWiki will log warnings if any of them are still found to help you remember. (You will also need to adjust any custom skins to follow a similar convention.) See for details.

MediaWiki 1.24 changes the paths of core skin files. After upgrading to this version, you should ensure that the old files,  ,   and   directly in the   directory are no longer present. See for details.

升级扩展
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.

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:

皮肤注册
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:

This code is for MediaWiki 1.25 and newer. For MediaWiki 1.24 you need to use the following code:

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.

扩展注册
从MediaWiki 1.25版开始，扩展使用新的扩展注册系统.

Previously your LocalSettings.php</tt> would include something like:

This can be converted to:

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.

其他变量
一些变量可能已过时，或甚至被移除. Having them in LocalSettings.php</tt> 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 backwards compatible. In any case, take a look to the release notes to see those changes.

运行更新脚本
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 attempt to download any missing dependency which MediaWiki needs.

命令行
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, change to the maintenance</tt> directory and execute the update script:

$ php update.php On a Linux server if you get an error try performing the same command as root ( sudo php maintenance/update.php ). Note for simple installations on Windows (e.g. with ): 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.

You might see a message that your PHP version is too old and that MediaWiki needs a newer version. After that message the update aborts. Reason for this error is that the command line can use another PHP version than that one which you have when you execute MediaWiki from the web server. When you get this message you should check, if you can execute a newer PHP version on the shell by using a different command: That might e.g. be php5 or php56. If another version is available and - if so - under which name, depends on the setup of your server. If it does not work, ask your hoster; he will surely know.

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

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 and  in your  file (in the main directory). These are the user and password needed by this script in order to access to the database.

What to do in case of "unexpected T_STRING" error
Individuals running update.php from the command line may encounter the following error: <pre style="overflow:auto;"> syntax error, unexpected T_STRING, expecting T_OLD_FUNCTION or T_FUNCTION or T_VAR or '}' \ in ~/maintenance/commandLine.inc on line 13 This error occurs when update.php is run from php4.

Individuals who have their site hosted by providers who provide both php4 and php5 should take the following steps:
 * 1) from the command line, enter the command 'whereis php5'
 * 2) once you have discerned the location of the php5 path, list the contents of php5/bin directory
 * 3) once you've determined the name of the php executable (either php or php5), type in the entire path to execute update.php

以下是个例子： <pre style="overflow:auto;"> $ whereis php5 $ ls -la /usr/local/php5/bin $ /usr/local/php5/bin/php update.php

What to do in case of 'register_argc_argv is set to false' error
You may encounter the error: <pre style="overflow:auto;"> Cannot get command line arguments, register_argc_argv is set to false

<pre style="overflow:auto;"> register_argc_argv=true
 * 1) Go to ~/maintenance. Either edit an existing 'php.ini' file, or create one.
 * 2) Add a line as follows:
 * 1) 重新运行php update.php

Web浏览器

 * 参见

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.

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 webserver 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.
 * 1) Always backup before performing database maintenance.
 * 2) Navigate your webbrowser to /mw-config/</tt>. For example, if your wiki is at  http://example.org/w/index.php </tt>, then navigate to  http://example.org/w/mw-config/ </tt>.
 * 3) 选择您的语言并点击继续.
 * 4) The existing installation should be detected. Follow the instructions on the screen to upgrade it. If asked for the "upgrade key", open your  file and look for the key assigned to.

测试更新
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.

常见问题
<section begin=FAQ />

更新有多难？
If the only file you have modified is, 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.13.0 to 1.13.1, 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 installer 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</tt> 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 everytime 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?
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 ( needs to be set to true in your for this to work). Next, run update.php, and then set the 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 the relevant settings file (warning: huge page!) and some related notes at Wikitech. You may need to upgrade to MediaWiki 1.4 before running the upgrade1.5 script.

If you are upgrading from MediaWiki 1.5 or newer, 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, also if you had not skipped versions, but if you had each time done each single update. Only will you - when you skipped versions - get them all at the same time. This will make the upgrade more difficult, but do not forget that you did not have the trouble updating to the intermediate versions, which you skipped!

If upgrading from a MediaWiki version below 1.19, you may need to add the sha1 field to the revision table manually before running the update script (see and a relevant support desk thread).

我是否应该首先备份？
一个字：是.

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.

我可以保留我的LocalSettings.php么？
Yes, but you may have to make some minor changes. The format of is largely backwards compatible. Changes which break LocalSettings.php compatibility will be documented in the "configuration changes" section of the release notes.

我的wiki可以在更新时保持在线么？
Generally yes, however 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
 * 2) Prepare that new directory: copy your current LocalSettings.php from the old directory, copy any installed extensions and custom skins (if any).
 * 3) In the release notes for the new version, see if any changes need to be made to LocalSettings.php.
 * 4) Place the database in read-only mode by inserting the following variable into LocalSettings.php in the old directory - users will see this message if they attempt an edit during the upgrade process:
 * 5) Run the update script or the web updater in the new directory.
 * 6) Copy the images from the images sub-directory from the old directory to the new directory.
 * 7) Swap the old directory and the new directory.

为什么升级？

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

Because it's usually easy enough, a single step from your version to latest and also via web.

Recent releases receive security fixes to keep your wiki and your host safe from vandals, while old releases don't (see ). That makes dozens good reasons to upgrade!

New major releases come with new features, which you might want to use: see the release notes for details. In case you need additional arguments to convince your bosses to let you upgrade from a pretty old version, here is a summary:


 * Since 1.5, edits can be previewed before saving also as diff.
 * Since 1.9, an undo button is available.
 * Since 1.12, patrolling on Special:NewPages is much easier.
 * Since 1.13, you can rename (move) files.
 * Since 1.14, you can fix double redirects automatically.
 * Since 1.16, is available.
 * If you have appropriate caching, since 1.17 optimizes pageload speeds a lot.
 * Since 1.17, category sorting makes sense! (especially for non-English letters); extended to 68 languages after 1.21.
 * Since 1.18 and 1.19, users of all languages and genders are correctly addressed by the interface and logs (before 1.15, no gender at all).
 * In 1.19 the skinning system was reworked making it easier to reuse parts of existing skins in your own skins.
 * Since 1.20, diffs are better readable.
 * In 1.21 and 1.23, email notifications become clearer and more predictable, making your wiki more effective.
 * Since 1.22, vandal fighting (patrolling) is less time-consuming.

See also the list of the most voted fixed issues on up to 2014.

Also, in MediaWiki 1.18 we started bundling some vital extensions, like a better editor and anti-vandalism tools ConfirmEdit and Nuke; more have been added in later releases. <section end=FAQ />

参见

 * Greg Sabino Mullane's Blog post provides some more detail about point release upgrades.
 * Project:Support desk if you need help or something went wrong
 * (if you don't have a successful backup)
 * (if you don't have a successful backup)
 * (if you don't have a successful backup)
 * (if you don't have a successful backup)
 * (if you don't have a successful backup)