Manual:Upgrading/zh



檔案轉送
選擇一種傳送檔案的方法


 * wget
 * 使用SCP或WinSCP備份文件
 * SSH文件傳輸協定 (SFTP)
 * 使用FTP客户端.
 * 主機提供商可能有提供一個在線的文件管理網頁；可以詢問一下廠家.
 * 其他方法. 那些傳輸方式的列表：文件傳輸協定列表

初步措施
閱讀.


 * 1) 檢查需求
 * 2) 閱讀發行說明
 * 3) 備份現有檔案和資料庫
 * 4) 解壓新文件
 * 5) 升級外掛
 * 6) 運行更新程式以檢查資料庫
 * 7) 測試更新

檢查需求
MediaWiki 需求：


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

如果你在使用PostgreSQL，請同時閱讀.

更多資訊請閱讀和.

閱讀發行版本說明
藉由解壓縮壓縮檔,或是由Git的檔案檢查/匯出, 裡面有一些檔案的檔名為大寫字母, 其中之個包含了 (wiki). 現在打開它，並看看這個版本改變了些什麼.

清空等待中的工作
出于性能原因，数据库中的某些操作被延迟，并由作业队列管理. 这些作业存储在数据库中，并包含有关应执行的操作的信息参数. 强烈建议在升级Wiki前运行这些待处理的作业，以避免这些参数在新版本中发生变化而失败. 在执行升级前，可使用运行所有挂起的作业并清除队列.

備份現有檔案和資料庫

 * 完整說明: 

虽然升级脚本维护良好且功能强大，但仍可能出错. 在更新数据库之前，请对Wiki进行一个完整备份，包括数据库和文件：


 * wiki的内容，来自数据库，（确保正确指定了字符集，首先检查LocalSettings.php）. 除了SQL数据库转储之外，创建XML转储可能是个好主意.
 * MySQL，SQL转储和XML转储都与 命令一起使用：

mysqldump --user=wikidb_user --password=wikidb_userpassword wikidb > file.sql mysqldump --user=wikidb_user --password=wikidb_userpassword wikidb --xml > file.xml
 * PostgreSQL，用于 命令的数据库转储：

pg_dump --create -Fc wikidb > file.db.dump
 * SQLite，您使用MediaWiki脚本进行备份：

php wikifolder/maintenance/sqlite.php --backup-to file
 * 图片和其他媒体文件（ 目录下的内容，自定义logo /skins/common/images/wiki.png）
 * 配置文件，例如: 和   （若存在）
 * MediaWiki的程序文件，包括所有的皮肤和扩展，特别是如果您修改了它们.

使用tarball打包
您可以通过FTP或者是命令行来放置新文件. 若您可以使用命令行，请使用命令行. 使用命令行要比使用FTP将数千个文件的每个文件上传要快得多.

FTP或图形界面
如果您不能够在服务器上访问命令行，下载MediaWiki tarball 到您的本地计算机并使用7zip解压该文件到本地计算机上.

在本地解压该文件后，使用您喜爱的FTP客户端软件上传目录和文件到服务器上.

命令行
若您当前用户下对Wiki安装目录没有完全的写入权限，则可能需要以 身份运行该命令. 在解压缩tar包时，通常会为新的Wiki版本创建一个新的目录，您需要从旧安装目录中复制之前配置文件和媒体文件目录：

$ 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 -

其他文件
在解压压缩包后，您应该从旧安装目录中复制或者移动一些文件和文件到新安装目录下：


 * 文件包含了您旧的配置设置.
 * （或在旧版本中 ）目录，包含所有上传至wiki的文件，除非您已选择不同的上传目录，并更改所有权和权限. 和 （例如如果您的web用户是“apache”）.
 * 在 目录下的扩展. 您应该经常更新扩展，旧扩展不能够保证在新版本的MediaWiki下工作.
 * 如果您使用了自定义logo，则还需要从备份中恢复该文件. 在1.24版本之前通常在 目录下. 在1.24版本之后在  或  目录下，取决于您选择使用的目录. 之后在LocalSettings.php文件中添加例如如下内容.
 * 在 目录下的自定义皮肤.
 * 对旧安装文件或扩展所做的任何修改.
 * 任何 .htaccess 文件（若您使用Apache并定义了规则）.

一旦完成，将这个新文件夹设为Web服务器上的发布文件夹. 或者将旧安装目录重命名，然后将新文件夹重命名为先前的旧安装目录的名字.

使用Git
如果使用，请将文件导出到干净的位置，然后将旧的自定义文件复制到新位置，如上一节中所述.

如果要升级到MediaWiki 1.25或更高版本，则还需要使用Composer或为维基媒体wiki场维护的提供的集合安装一些外部PHP库. 有关安装和更新外部库的更多详细信息，请参见Git下载文档.

使用补丁
通常可以使用小补丁文件进行次要版本升级. 从转存文件手动下载并解压缩补丁文件，或按照下面wget的说明进行操作. 补丁是增量的，你不能跳过版本.


 * 1) cd 定位到您MediaWiki的主目录下（存有LocalSettings.php文件的目录）
 * 2) 下载补丁文件，并用 gunzip 命令解压它.
 * 3) 使用 检查什么被修改了（例如： ）
 * 4) 如果一切顺利，再次运行 patch 而不用.
 * 5) 检查您的Special:Version，您应该看到新的版本号.

可能导致错误的剩余文件
如果在旧安装目录上解压缩，则某些旧文件可能会导致新版本出现问题.

如果您没有使用profiling，但在MediaWiki根文件夹中有 文件，则可能会收到引用 的错误. 删除或重命名 文件将解决此错误. 如果您将来启用分析，则 文件（也在MediaWiki根文件夹中）可以用作模板.

MediaWiki 1.23不推荐核心皮肤文件的皮肤自动发现机制. 升级到此版本后，您应该确保 目录中的旧文件 、 、 和 以及 目录中的相应子文件夹已被删除. MediaWiki将记录警告，如果仍然发现它们中的任何一个可以帮助您记住（您还需要调整任何自定义外观以遵循类似的约定）. 有关详细信息，请参阅.

MediaWiki 1.24更改了核心皮肤文件的路径. 升级到此版本后，应确保 目录中的旧文件 、 、 和 不再存在. 有关详情，请参阅.

升级扩展
某些扩展已更新，以便使用新版本的MediaWiki. 请务必升级到此类扩展的最新版本. 您可能需要对自定义扩展程序执行手动更新.

不同的tarballs包含一些扩展子集，并具有版本控制功能，可帮助您升级为MediaWiki核心版本选择正确的版本.

Extension Distributor适用于大多数想要使用支持的MediaWiki版本的扩展快照的人.

如果你想要很多扩展，那么从Git下载可能是最好的. 如果您没有Git但想要升级大量扩展，可以考虑使用mwExtUpgrader.

修改 LocalSettings.php 文件
如果你使用来自旧版本的LocalSettings.php文件，你可能需要修改这个文件使其能够在新版本上使用.

皮肤注册
从MediaWiki 1.24版本开始Vector，Monobook，Modern和CologneBlue等捆绑的皮肤不再是MediaWiki核心的一部分，使用这些皮肤需要在 中注册，否则MediaWiki会向你提示没有安装这些皮肤.

若您希望这些皮肤可用，这是您升级到1.24版本后需要添加到 的内容：

此代码用于MediaWiki 1.25和更新版本. 对于MediaWiki 1.24您需要使用以下代码：

其他皮肤可能并不适应新的皮肤注册系统，所以请参阅有关每个皮肤的文档页面，了解如何在遇到问题时正确地注册它.

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

您之前的 会包含这些内容：

这些可以转换为：

扩展正在适应使用新的扩展注册系统. 未经调整的扩展应使用旧的安装方式. 有关详细信息，请参阅扩展页面上的安装说明.

其他变量
一些变量可能已过时，或甚至被移除. 将它们放在 中通常不会有任何影响. 可以在较新版本中添加新变量，或者某些现有变量更改其类型. 我们通常会尝试为它们使用合理的默认值，并且在类型更改的情况下，向后兼容. 无论如何，请查看发行说明以查看这些更改.

运行更新脚本
您可以通过两种方式升级MediaWiki数据库：从命令行或从Web浏览器升级. 如果您具有对服务器的shell访问权限，则建议从命令行进行升级，因为这样可以降低升级过程因超时或连接重置而中断的风险.

该脚本还将尝试下载MediaWiki需要的任何缺少的依赖项.

命令行
访问服务器的命令行或SSH shell或类似命令行. 您可以通过SSH连接到服务器来访问命令行. 如果您正在使用的本地PC运行Microsoft Windows，则需要使用PuTTY之类的工具来使用SSH. 从命令行或命令行管理程序，切换到 目录并执行升级脚本：

$ php update.php 在Linux服务器上，如果出现错误，请尝试以root身份执行相同的命令（ sudo php maintenance/update.php ）. 注意在Windows上进行简单安装（例如使用）： 首先确保您的Web服务器（例如Apache）和您的数据库（例如MySQL）正在运行. 然后运行update.php：右键单击它，选择Open With，然后浏览到PHP.exe. 模式升级完成后，生成的命令提示符窗口可能会自动关闭.

您可能会看到一条消息，指出您的PHP版本太旧，而且MediaWiki需要更新的版本. 在该消息之后，更新中止. 此错误的原因是命令行可以使用另一个PHP版本，而不是从Web服务器执行MediaWiki时使用的PHP版本. 当您收到此消息时，您应该检查如果您可以使用其他命令在shell上执行较新的PHP版本： 是php5或php56. 如果有其他版本可用，如果可用——在哪个名称下，取决于服务器的设置. 如果它不起作用，请询问您的主机提供商，他一定会知道的.

MediaWiki将检查现有架构并更新它以使用新代码，根据需要添加表和列.

当发生“ALTER命令对用户拒绝”错误（或类似错误）时应做什么
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.

当发生“意外的T_STRING”错误时应做什么
Individuals running update.php from the command line may encounter the following error:

 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

以下是个例子：

 $ whereis php5 $ ls -la /usr/local/php5/bin $ /usr/local/php5/bin/php update.php

当发生“register_argc_argv被设定为假”错误时应做什么
您可能遭遇这样的错误：  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.
 * 2) 添加下面一行：

 register_argc_argv=true


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


 * 1) Always back up before performing database maintenance.
 * 2) Navigate your webbrowser to  . For example, if your wiki is at , then navigate to.
 * 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.

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.

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

常见问题


更新有多难？
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  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.

我如何从一个非常老的版本升级？只需一步还是需要很多步？
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 want to make a database dump (e.g. MySQL) of your Latin-1 wiki, make sure the type of the  field in the  table is , not  , to avoid character encoding issues.

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!

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

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). Check  setting in LocalSettings.php and if necessary copy logo file from the old directory to the new directory.
 * 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) * This no longer works since MediaWiki 1.27, which also prevents running the update script. See.
 * 6) Run the update script or the web updater in the new directory.
 * 7) Copy the images from the images sub-directory from the old directory to the new directory.
 * 8) Swap the old directory and the new directory.

为什么升级？

 * 订阅mediawiki-announce以获取新发行版本的通知. 

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.
 * 从1.16版本起可使用.
 * 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.
 * Since and, users of all languages and genders are correctly addressed by the interface and logs (before 1.15, no gender at all).
 * In the skinning system was reworked making it easier to reuse parts of existing skins in your own skins.
 * Since 1.20, diffs are more 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.


 * In 1.24, password storage was improved to allow for better security.


 * Since 1.25, enhanced recent changes are available


 * In 1.26, the "ResourceLoader" mechanism was improved


 * In 1.27, the session management was reworked as well as the user authentication management completely modernized.


 * Since 1.29, the Action API was reworked and improved. Also user group assignments may now be done for a selectable period.

参见直到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. 

参见

 * 格雷格·萨比努·穆雷恩的博客文章提供了一些有关指向发行版本升级的详情.
 * 如果您需要帮助，或发生了一些错误的话，可前往Project:Support desk询问
 * (如果您没有成功的备份)
 * (如果您没有成功的备份)
 * (如果您没有成功的备份)
 * (如果您没有成功的备份)
 * (如果您没有成功的备份)