WestHostでNucleusを使う
PHPとMySQLのインストール
管理画面でPHP 4.x、MySQL 4.1、phpMyAdmin、eAcceleratorをインストールしておく。 eAcceleratorはPHPのプログラムをキャッシュするアクセラレータ。サイトがぐっと速くなる。
MySQLの設定
/etc/my.cnf
[mysqld] default-character-set = utf8 character-set-server = utf8 collation-server = utf8_general_ci init-connect=SET NAMES utf8 [mysqldump] default-character-set = utf8 [mysql] default-character-set = utf8
PHP の設定
/usr/local/lib/php.ini
register_globals = Off ; for security [mbstring] mbstring.language = Japanese mbstring.internal_encoding = UTF-8 mbstring.encoding_translation = Off
TIMEZONE
/etc/TIMEZONE を編集
#TZ=US/Eastern TZ=JST-9
/etc/rc.d/rc のどこか最初のほう
TZ="JST-9" export TZ
それから、/etc/sysconfig/init というファイルを作る。中身は
!#/bin/sh export TZ="JST-9"
chmod 755 /etc/sysconfig/init しておく。
上記を設定して、restart。
Nucleusからの接続文字コードをUTF-8に
MySQL 4.1から内部で使う文字コードが自由に選べるようになった。このため、接続するクライアント側の文字コードとデータベース側の文字コードが違っている場合にはデータベース側で文字コード変換をしてくれる。デフォルトのクライアント側の文字コードがISO-8859-1になっている場合、PHPからMySQLにアクセスするとき、接続する文字コードを指定しないとMySQLが内部のUTF-8のコードを無理やりISO-8859-1に変換して送り出してしまう(逆に、書き込むときはUTF-8の文字列をISO-8859-1だと思って逆変換してしまう)。これを避けるするために、念のためにNucleusのコアにちょっと手を入れる。 nucleus/lib/globalfunctions.phpのfunction sql_connect()の中。return $connection;の前にmysql_query('SET NAMES utf8');を追加。
/** * Connects to mysql server */ function sql_connect() { global $MYSQL_HOST, $MYSQL_USER, $MYSQL_PASSWORD, $MYSQL_DATABASE; $connection = @mysql_connect($MYSQL_HOST, $MYSQL_USER, $MYSQL_PASSWORD) or startUpError('<p>Could not connect to MySQL database.</p>','Connect Error'); mysql_select_db($MYSQL_DATABASE) or startUpError('<p>Could not select database: '. mysql_error().'</p>', 'Connect Error'); mysql_query('SET NAMES utf8'); return $connection; }