ちょっと必要に迫られ PHP のライブラリ Pecl の SQLite をインストールすることに。
なんとかインストールは出来たものの、いつもの通りすんなりは行きませんでした…
通常ですと、
$ pecl install sqlite
で済むはずが、どうしてもエラーが出る…
/tmp/pear/cache/SQLite-1.0.3/sqlite.c:56: error: ‘BYREF_NONE’ undeclared here (not in a function)
/tmp/pear/cache/SQLite-1.0.3/sqlite.c:56: error: ‘BYREF_FORCE’ undeclared here (not in a function)
BYREF_NONE と BYREF_FORCE が定義されていないっすといった感じであろうか。困ったので検索しまくっていたらまたもや直接的な対処方法を発見。
対処方法: FC4 PHP and SQLite
ざっくり読むと FC4 だと問題が出る、解決方法はこうだ!とあります。なので、その通りソースをダウンロードしてインストールすることにします。
$ wget http://pecl.php.net/get/SQLite-1.0.3.tgz
$ tar xzf SQLite-1.0.3.tgz
$ cd SQLite-1.0.3
$ phpize
$ ./configure
で、ここでソースを直接編集します。
Line: 56 行目をコメントアウト /* ~ */ で囲う
/* static unsigned char arg3_force_ref[] = {3, BYREF_NONE, BYREF_NONE, BYREF_FORCE }; */
Line: 125, 126 の arg3_force_ref を third_arg_force_ref に変更
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)
でソースを編集し終わったら make してインストール。
$ make
$ make install
これで最後に php.ini で extension の設定をすれば、無事 SQLite のインストールは完了です。
※ 確認方法は、phpinfo() に SQLite が表示されていれば OK です。
とっても助かりました。
php3_sqliteもコンパイル通らないし途方にくれていたのです。
コメントありがとうございます!
自分も文中にある blog で解決方法を知ったのですが、なかなかソース変更までの対処って難しいですよねぇ。