MediaWiki: 如何Update.php维护wiki家族的脚本?

MediaWiki: How to Update.php maintenance script on wiki family?

我正在 运行创建一个 MediaWiki wiki 系列,具有共享代码库和共享数据库。我最近成功升级到 1.25.3.

我的 wiki 有 4 个前缀 ATM,像这样:

en_
de_
es_
shared_

我尝试 运行 我的 update.php 脚本是这样的:

php update.php --wiki myWikiName-de_ --doshared
php update.php --wiki myWikiName-en_ --doshared
php update.php --wiki myWikiName-es_ --doshared

在我的服务器上。这在理论上应该有效。遗憾的是它总是使用 myWikiName-en_ 并忽略我的输入..

PHP Notice:  Undefined index: HTTP_HOST in /var/www/myWiki/wiki/LocalSettings.php on line 176
<br />
<b>Notice</b>:  Undefined index: HTTP_HOST in <b>/var/www/myWiki/wiki/LocalSettings.php</b> on line <b>176</b><br />
MediaWiki 1.25.3 Updater

Your composer.lock file is up to date with current dependencies!
Going to run database updates for myWikiName-en_
Depending on the size of your database this may take a while!

请有人告诉我我做错了什么!

尝试在 运行 php update.php 之前设置 SERVER_NAME=my.domain.org。该脚本可能正在寻找 $_SERVER,因为您在命令行中 运行,它不可用。

我修好了。对于我的三种语言,我不得不手动将 $wgDBprefix 设置为首先是 de_,然后是 es_,最后是 en_。这样我就可以 运行 Update.php 每个 wiki-family-member 的脚本一次。

感谢@leo 的帮助

当您查看 /maintenance/update.php 时,您会发现它是 /maintenance/Maintenance.php 的扩展,其中各种选项参数具有已定义。

我成功地使用了 conf 选项,它告诉 Maintenance.php 脚本(以及 update.php 脚本)关于要使用的 LocalSettings.php 文件的位置:

$ php update.php --conf /var/www/<myWebfolder>/da/LocalSettings.php
$ php update.php --conf /var/www/<myWebfolder>/de/LocalSettings.php
$ php update.php --conf /var/www/<myWebfolder>/en/LocalSettings.php

等等

执行此操作的方法似乎是将语言和管道回显到命令。例如

for lang in en de es; do
    echo $lang | php update.php || read x
done

(以上将 运行 语言 'en'、'de' 和 'es' 的更新程序,如果有的话,将停止并等待来自命令行的输入其中失败了)