■インストーラ(2)
新規インストールにおける「database_collation」と「database_connection_charset」について
新規インストールの場合、
「Connection Information」のフォーム(install/action.connection.php)で、
「database_collation」は、デフォルトとして「utf8_general_ci」が入った状態で表示されます。
が、この項目の入力値は、インストールに反映されません。
もしかすると、
install/action.summary.phpの116行目~
$database_charset = substr($database_collation, 0, strpos($database_collation, '_') - 1);
$database_connection_charset = $_POST['database_connection_charset'];
のあたりで「$database_charset」の代わりに、
「$database_connection_charset」に入れるつもりだったのではないかと想像しています。
の部分の2行目(117行目)は、
$database_connection_charset = $database_charset;
とするつもりだったのではないかと想像しています。(※1)
(この116行目でセットした「$database_charset」は、この後、どこにも使われていないようです。)
また、上記116行目のコード中の「-1」は間違いかと思われます。
(「utf8_general_ci」→「utf」になってしまいます。)
これと同様の「-1」が、145行目にもあります。
さらに、217行目では、
<input type="hidden" value="<?php echo $_POST['database_connection_charset'] ?>" name="database_connection_charset" />
となっていて、せっかく146行目で生成した「$database_connection_charset」が捨て去られているようです。
結果的に、新規インストールでは、
manager/includes/config.inc.php
10行目9行目(※2)の「$database_connection_charset」には、何も入りません。
普段、新規インストールぐらいしか使っていないので、新規インストールに関してのみ、ご報告いたします。
(※1)(※2)訂正しました。
2008-09-03追記)
0.9.6.2に関して、「modx-0.9.6.2-rc2」のソースを見る限りでは、
上記の箇所は修正されていませんが、
「action.options.php」の3行目~
if ($installMode == 0) {
$_POST['database_connection_charset'] = substr($_POST['database_collation'], 0, strpos($_POST['database_collation'], '_'));
}
を追加することによって、
「database_collation」に値が入っている場合に関して、問題は回避しているようです。