phplist-2.10.10 をインストールした。



<ol> <li>アーカイブを展開する。</li>
<li>public_html/lists/* を Web の公開ディレクトリへ置く。</li>
<li>config/config.php の内容と整合性のあるように、MySQL の DB とユーザを作成する。</li>
<li>http://xxxxxxxx/phplist/admin にアクセスすると、DB が無いよ、初期化しなさい、と言われる。</li>
<li>初期化すると、Database error 1071 while doing query Specified key was

too long; max key length is 1000 byte というエラーが発生する。<li>

<li>UTF-8 だと、バイト数の問題でオーバーしてしまうらしい。http://forums.phplist.com/viewtopic.php?p=27343

を参考に、email フィールドの長さを 255 から 100 にしてみる。

<pre class="prettyprint"> * admin/structure.php.org 2009-06-23 20:07:28.000000000 +0900
— admin/structure.php 2009-06-23 20:08:30.000000000 +0900
****
** 27,33 **
),
“user” => array ( # a user in the system
“id” => array(“integer not null primary key
auto_increment”,”sysexp:ID”),
! “email” => array(“varchar(255) not null”,”Email”),
“confirmed” => array(“tinyint default 0”,”sys:Is this user
confirmed”),
“blacklisted” => array(“tinyint default 0”,”sys:Is this user
blacklisted”),
“bouncecount” => array(“integer default 0”,”sys:Number of
bounces on this user”),
— 27,33 —-
),
“user” => array ( # a user in the system
“id” => array(“integer not null primary key
auto_increment”,”sysexp:ID”),
! “email” => array(“varchar(100) not null”,”Email”),
“confirmed” => array(“tinyint default 0”,”sys:Is this user
confirmed”),
“blacklisted” => array(“tinyint default 0”,”sys:Is this user
blacklisted”),
“bouncecount” => array(“integer default 0”,”sys:Number of
bounces on this user”),
****
** 60,71 **
“index_2” => array(“dateidx (date)”,”sys:index”),
),
“user_blacklist” => array(
! “email” => array(“varchar(255) not null unique”,”Email”),
“added” => array(“datetime”,”When added to blacklist”),
“index_1” => array(“emailidx (email)”,””),
),
“user_blacklist_data” => array(
! “email” => array(“varchar(255) not null unique”,”Email”),
“name” => array(“varchar(100) not null”,”Name of Dataitem”),
“data” => array(“text”,””),
“index_1” => array(“emailidx (email)”,””),
— 60,71 —-
“index_2” => array(“dateidx (date)”,”sys:index”),
),
“user_blacklist” => array(
! “email” => array(“varchar(100) not null unique”,”Email”),
“added” => array(“datetime”,”When added to blacklist”),
“index_1” => array(“emailidx (email)”,””),
),
“user_blacklist_data” => array(
! “email” => array(“varchar(100) not null unique”,”Email”),
“name” => array(“varchar(100) not null”,”Name of Dataitem”),
“data” => array(“text”,””),
“index_1” => array(“emailidx (email)”,””),
****
** 256,262 **
“id” => array(“integer not null primary key auto_increment”,”ID”),
“user” => array(“integer not null”,”User ID”),
“message” => array(“integer not null”,”Message ID”),
! “forward” => array(“varchar(255)”,”Forward email”),
“status” => array(“varchar(255)”,”Status of forward”),
“time” => array(“timestamp”,”When was it forwarded”),
“index_1” => array(“usermessageidx (user,message)”,”index”),
— 256,262 —-
“id” => array(“integer not null primary key auto_increment”,”ID”),
“user” => array(“integer not null”,”User ID”),
“message” => array(“integer not null”,”Message ID”),
! “forward” => array(“varchar(100)”,”Forward email”),
“status” => array(“varchar(255)”,”Status of forward”),
“time” => array(“timestamp”,”When was it forwarded”),
“index_1” => array(“usermessageidx (user,message)”,”index”),
****
** 273,279 **
“id” => array(“integer not null primary key auto_increment”,”sys:ID”),
“loginname” => array(“varchar(25) not null”,”Login Name (max
25 chars)”),
“namelc” => array(“varchar(255)”,”sys:Normalised loginname”),
! “email” => array(“varchar(255) not null”,”Email”),
“created” => array(“datetime”,”sys:Time Created”),
“modified” => array(“timestamp”,”sys:Time modified”),
“modifiedby” => array(“varchar(25)”,”sys:Modified by”),
— 273,279 —-
“id” => array(“integer not null primary key auto_increment”,”sys:ID”),
“loginname” => array(“varchar(25) not null”,”Login Name (max
25 chars)”),
“namelc” => array(“varchar(255)”,”sys:Normalised loginname”),
! “email” => array(“varchar(100) not null”,”Email”),
“created” => array(“datetime”,”sys:Time Created”),
“modified” => array(“timestamp”,”sys:Time modified”),
“modifiedby” => array(“varchar(25)”,”sys:Modified by”),
****
** 407,413 **
/* “translation” => array(
“id” => array(“integer not null primary key auto_increment”,””),
“translator” => array(“varchar(255)”,”Name of translator”),
! “email” => array(“varchar(255)”,”email of translator”),
“pass” => array(“varchar(255)”,”encrypted password for translation”),
“ident” => array(“varchar(255)”,”Translation identifier”)
),
— 407,413 —-
/* “translation” => array(
“id” => array(“integer not null primary key auto_increment”,””),
“translator” => array(“varchar(255)”,”Name of translator”),
! “email” => array(“varchar(100)”,”email of translator”),
“pass” => array(“varchar(255)”,”encrypted password for translation”),
“ident” => array(“varchar(255)”,”Translation identifier”)
),
</pre> </li>

<li>DB を一度 drop して再度作り直し、もう一度初期化。今度はテーブルの生成に成功した。</li>

<li>これでとりあえず動いているらしい。</li>

</ol>