现在的位置: 首页 > 未分类 > 正文

MediaWiki千辛万苦安装记

2005年08月04日 ⁄ 未分类 ⁄ 共 3044字 ⁄ 字号 评论 6 条

MediaWiki-大名鼎鼎的维基百科采用的源代码,也是目前被使用最多的wiki系统,其性能和功能自然是相当出色的,而且还是开源代码。

不过此次我的安装却是一波三折,折腾了我好几天,才终于安装成功,现在将我的经验分享给大家,希望在大家遇到类似问题的时候也能够顺利过关。

MediaWiki去下载最新的稳定版本,最新的是11月2日发布的稳定版本1.5.2,我安装的是1..5.0,只有2.16M。

安装MediaWiki,推荐采用Linux或FreeBSD平台,Apache服务器,MySQL 4.0.x,PHP 4.3.x,这样的搭配只要一步步正确操作下来通常都很顺利就可以安装成功。

不过我用的是Win2000+MySQL4.1.0(utf8)+PHP4.4.1,结果安装Mediawiki过程中出现如下错误:

Trying to connect to MySQL on localhost as root... File 'c:\mysql\share\charsets\?.conf' not found (Errcode: 22) Character set '#33' is not a compiled character set and is not specified in the 'c:\mysql\share\charsets\Index' file

这个问题折腾了我很久,找遍了国内外所有相关文章,发现没有很妥善的解决办法,因为PHP4.4.1内建的MYSQL Client API 版本太低3.23.49,同现有的MySQL系统无法很好搭配,于是将php升级到最新版PHP5.05,当然还有一种办法就是降低MySQL到4.0.x版本,因为4.1.x在字符集上容易造成程序错误。

现在的系统是,Win2000+MySQL4.1.0+PHP5.0.5,注意安装时在php.ini文件中将extension=php_gd2.dll前面的;去掉,使得可以使用Gd库。然后执行根目录下的index.php就可以进行安装。

Site name:你的wiki站点名称。
Contact e-mail:站长的联络邮件
Language:语种选择。建议选择zh-cn简体中文。
Copyright/license medadata:版权类型。
Sysop account name:管理员帐号,建议用英文帐号。
password:管理员密码
Shared memory caching:网站缓冲机系统,建议选择Turck MMCache
MySQL server:MySQL服务器名称,一般为localhost
Database name:数据库名称
DB username:数据库用户名
DB password:数据库密码
Database table prefix:数据表前缀。建议设置,便于以后安装多个wiki系统。
DB root password:数据库root密码。(可省略)

点击安装以后,程序就自动生成数据库表,并在config目录生成LocalSettings.php文件,请将这个文件copy到上层wiki根目录,然后删除config目录,执行wiki根目录下的index.php文件,就可以看到你的Wiki系统了。

不过Windows系统下的安装还需要修改一个参数,将根目录下相关文件中的$_SERVER['REQUEST_URI']替换为$_SERVER['SCRIPT_NAME']。

这样修改后,wiki系统基本就可以浏览使用了,不过在编辑页面或浏览某些页面的时候仍然会出现以下错误:

来自于函数 "Parser::replaceLinkHolders"。 MySQL返回错误 "1267: Illegal mix of collations (utf8_bin,IMPLICIT) and (latin1_swedish_ci,COERCIBLE) for operation ' IN ' (localhost)"。

来自于函数 "Parser::replaceLinkHolders"。 MySQL返回错误 "1271: Illegal mix of collations for operation ' IN ' (localhost)"。

这两个错误也折腾了我好几天,所有的资料都查遍了,发现是字符集问题,MySQL 4.1的字符集支持(Character Set Support)有两个方面:字符集(Character set)和排序方式(Collation)。对于字符集的支持细化到四个层次: 服务器(server),数据库(database),数据表(table)和连接(connection)。 而Mysql默认字符集是latin1的瑞典语排序方式,你在Mysql环境下用以下两个命令就可以得知它的默认字符集:
mysql> SHOW VARIABLES LIKE 'character_set_%';
+--------------------------+----------------------------+
| Variable_name | Value |
+--------------------------+----------------------------+
| character_set_client | latin1 |
| character_set_connection | latin1 |
| character_set_database | utf8 |
| character_set_results | latin1 |
| character_set_server | utf8 |
| character_set_system | utf8 |
| character_sets_dir | c:\mysql\share/charsets/ |
+--------------------------+----------------------------+
7 rows in set (0.00 sec)

mysql> SHOW VARIABLES LIKE 'collation_%';
+----------------------+-------------------+
| Variable_name | Value |
+----------------------+-------------------+
| collation_connection | latin1_swedish_ci |
| collation_database | utf8_general_ci |
| collation_server | utf8_general_ci |
+----------------------+-------------------+
3 rows in set (0.00 sec)

发现虽然你的MySQL是配置的utf8字符集,但是默认的连接排序方式仍然是瑞典语,看来这个瑞典公司真是偏心啊。如果使用SET NAMES 'utf8';命令可以将默认字符集修改为utf8,但是错误依然。

网上查询下来最好的方式就是重新编译Mysql系统,可以一劳永逸,不过我却不想再折腾了,于是开始捣腾源代码,最后追踪到Database.php,找到数据库查询子函数:function doQuery,在进行查询前加入以下语句:

mysql_query("SET NAMES 'utf8';", $this->mConn );

于是刚才所有的错误都解决了,真是开心啊,整个安装过程花了我接近一周的时间,终于大功告成。希望我的文章能够帮助到大家。

Del.icio.us :

目前有 6 条留言    访客:3 条, 博主:0 条 ,引用: 3 条

  1. xg 2005年11月17日 3:59 下午  Δ-49楼

    不错,看了你这个,很有帮助,谢谢。

  2. winner 2006年03月11日 11:29 下午  Δ-48楼

    ======================================
    function doQuery,在进行查询前加入以下语句:
    mysql_query(“SET NAMES ‘utf8′;”, $this->mConn );
    =======================================

    還要在加一行:
    mysql_query(“SET CHARACTER SET UTF8”, $this->mConn );

    才可以成功, 這是我試的結果,
    同時也感謝你的指點方向

  3. bill 2007年07月13日 1:02 下午  Δ-47楼

    谢谢分享.

外部的引用: 3 条

  • GongDa’s Blog » mysql 和 mediawiki 編碼問題
  • 风言疯语之IT罗盘 – I WebloG
  • 如何解决MediaWiki装安时的1267数据库错误 – 老王的教育Blog

给我留言

留言无头像?


×