manekineko倉金家ホームページ

趣味の部屋/サーバー構築メモ その2

SQlite

2010年9月4日(土)
CentOS5のphpではなぜかSQLiteが使えませんでした。
できるだけ簡単な方法で使えるようにと検討し、成功!


centOS5.5のphpではなぜか従来のSQLite関連の関数 sqlite_....() が使えません。
PDOを使えということのようですが、そうすると従来のプログラムをすべて書換えなければなりません。
phpをビルドしなおせばいいのでしょうがバージョンアップの度にやり直すのもめんどうだし、なるべく簡単に従来のSQLite関数のみをインストールすることにしました。

まずphpのソースをゲット。
# wget http://ftp.riken.jp/Linux/centos/5.5/os/SRPMS/php-5.1.6-27.el5.src.rpm
続いて
# rpm -ivh php-5.1.6-27.el5.src.rpm
ユーザ名不一致の警告が出るが気にしない。

次に、rpm/SOURCES に入ると、php-5.1.6.tar.gz があるので展開してしまいます。
# cd rpm/SOURCES
# tar zxvf php-5.1.6.tar.gz

php-5.1.6 なるフォルダができます。さらに中へと...
#cd php-5.1.6/ext/sqlite

コンパイル
# phpize
# ./configure --enable-sqlite-utf8
# make
コンソール出力
どうやらうまいことコンパイルできたようです。

インストール
# make install
コンソール出力
インストール成功。

仕上げに /etc/php.d に sqlite.ini をつくり、
; Enable sqlite extension module
extension=sqlite.so
と書き込みます。

httpd を再起動。
# service httpd restart

さっそく適当なサイトのデータベースをSQLiteに切り替えて表示してみます。
結果、見事に文字化けしています。
現行サーバーのEUC-JPのSQLiteデータをそのままコピーしてあるためのようです。
(MySQLはUTF-8で保存するがSQLiteはEUC-JPでそのまま保存するみたい。)。
いったんMySQLに戻し、ホームページプログラム"IRORIBATA"のバックアップ機能を使いUTF-8でSQLiteにデータをバックアップ。
再度SQLiteに切り替えると今度は文字化けもなく完璧!
CentOS5.5でSQLite関数が使えるようになりました。

プログラムはそのうちPDOを使って書き直そう。SQLite3はPDOを使わないとだめなようだし。
でもいったんフォローした機能は継続してフォローしてほしいなあ。バージョンアップしたとたんに全部動かなくなるんじゃたまんない。