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;
}
westhost/nucleus.txt · 最終更新: 2008/03/07 16:45 by osamu
CC Attribution-Noncommercial-Share Alike 4.0 International
Driven by DokuWiki Recent changes RSS feed Valid CSS Valid XHTML 1.0