CentOS5.4 / PHP5.1.6 / MDB2 / SQLite2の設定

CentOS 5.4にyumphpをインストールする。

yum -y install httpd php php-pear

しかしSQLitePECLでインストールするも失敗する。

pecl install SQLite

そこでソースをダウンロードしてインストールする。

cd /usr/local/src/
wget http://pecl.php.net/get/SQLite-1.0.3.tgz
tar zxvf SQLite-1.0.3.tgz
cd SQLite-1.0.3
phpize
./configure

問題のある部分のソースを以下のように修正

cp -a sqlite.c sqlite.c.org
vi sqlite.c

diff sqlite.c sqlite.c.org
56c56< //static unsigned char arg3_force_ref[] = {3, BYREF_NONE, BYREF_NONE, BYREF_FORCE };

    • -

> static unsigned char arg3_force_ref[] = {3, BYREF_NONE, BYREF_NONE, BYREF_FORCE };
125,128c125,126< //PHP_FE(sqlite_open, arg3_force_ref)< PHP_FE(sqlite_open, third_arg_force_ref)< //PHP_FE(sqlite_popen, arg3_force_ref)< PHP_FE(sqlite_popen, third_arg_force_ref)

    • -

> PHP_FE(sqlite_open, arg3_force_ref)
> PHP_FE(sqlite_popen, arg3_force_ref)

インストール成功

make
make install
service httpd restart

PEARMDB2sqliteのドライバのMDB2_Driver_sqliteをインストールする。

pear install MDB2
pear install MDB2_Driver_sqlite

しかし何故かSegmentation Faultが起こってMDB2が動かない。

そもそもPECLSQLiteはメンテナンスされてないので、PHPのソースに付属してくるSQLiteを入れる。

cd /usr/local/src/
wget http://museum.php.net/php5/php-5.1.6.tar.gz
tar zxvf php-5.1.6.tar.gz
cd php-5.1.6/ext/sqlite
phpize
./configure
make
cp modules/sqlite.so /usr/lib/php/modules/
echo extension=sqlite.so > /etc/php.d/sqlite.ini
service httpd restart

しかしphpinfo();をしても何故かSQLitePHPに認識されない。

色々と試してみてPHPのPDOのインストールが必要なことが判明。

yum -y install php-pdo
service httpd restart

これでphpinfo();にもSQLiteがロードされる。

MDB2SQLiteも問題無く動いた!