MediaWiki

MediaWikiをインストールした。PHPが古かったので、1.6.12。


セットアップ中、次のエラーが、


failed with error code "Specified key was too long; max key length is 1024 bytes


http://www.mediawiki.org/wiki/Manual:Errors_and_Symptoms/ja

に従い、


maintenance/tables.sqlで、KEY (job_cmd, job_namespace, job_title)を
KEY (job_cmd(160), job_namespace, job_title(160))で置き換え。


(テーブルドロップが面倒だったので)
プレフィックスを変更して、リトライ。成功。


生成されたconfig/LocalSettings.phpをトップに配置し終了。


トップのロゴは、LocalSettings.phpの$wgLogoで変更可

##$wgLogo = "$wgStylePath/common/images/wiki.png";
$wgLogo = "$wgStylePath/common/images/mediawiki.png";



ん?
メインページを更新できない。。エラーメッセージ。

"Article::insertOn". MySQL returned error "1062: Duplicate entry '0-' for key 2 

LocalSettings.phpに、

$wgShowSQLErrors=true; 

を加えてSQLを見ると、mw_pageテーブルのname_titleキーでこけたらしい。
page_namespaceフィールドでこけたらしい。
このキーはpage_namespaceとpage_titleの2つのフィールドから
なってるみたいだけど、page_titleで日本語が通ってなかったためみたい。


日本語を通す方法を調べるよりは、英語のまま使った方が手っ取り早いだろうと考え、(面倒がらずに)テーブルとLocalSettings.phpを削除して、設定をやり直したら、大丈夫だった。

んん?
ユーザのPreference(日本語だとオプション)で、
インターフェース言語を変更できた。


あれれ、そっか、日本語名のページを使えないから、問題あるな。
やはりSQLで日本語を通せるようにしなきゃいかんね。
文字コード設定する変数調べてみよう。


その後、いろいろと試したところ、どうにかできるようになった。ふー。

1. mysqlデータベースのデフォルトの文字セットをutf8に変更

ALTER DATABASE `db4wiki` DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci 


2. MediaWikiのトップディレクトリの.htaccessに以下を追加。

php_value mbstring.detect_order auto
php_flag mbstring.encoding_translation On
php_value mbstring.http_input auto
php_value mbstring.http_output UTF-8
php_value mbstring.internal_encoding UTF-8
php_value mbstring.language Japanese

※LocalSettings.php

$wgEditEncoding = "UTF-8";
$wgInputEncoding = "UTF-8";
$wgOutputEncoding = "UTF-8";

などでは、変化がなかった。。


3. 最初の設定時に、"Experimental MySQL 4.1/5.0 UTF-8"を選択、
cmd_jobは、"maintenance/mysql5/tables.sql"を修正。

これで、LocallSettings.phpの$wgDBmysql5が有効になり、

# Experimental charset support for MySQL 4.1/5.0.
$wgDBmysql5 = true;

include/Database.phpの↓で、SET NAMES utf8を実行する。

		global $wgDBmysql5;
		if( $wgDBmysql5 ) {
			// Tell the server we're communicating with it in UTF-8.
			// This may engage various charset conversions.
			$this->query( 'SET NAMES utf8' );
		}


"Illegal mix of collations"エラーで躓いてたんだけども、
↓が参考になった。多謝。
Ref. http://pools.jp/2007/02/18/mediawiki-install-error-utf8-xrea/