PHP 5.1.6 + json 再び

RHEL上で稼働しているPHP 5.1.6にjsonモジュールを追加するお仕事が来た.
# phpはyumでインストール済みと(聞いて)確認済み.

CentOS5.2でも試している作業なので気楽なもんだ〜と舐めてかかったのが間違いのもと.

pearpecl/jsonをインストールして...としてみたら

/usr/local/lib/php/20060613/json.so

なんて場所にjson.soが出来た.
/usr/lib/php/modulesにコピーすれば稼働するだろうと思い込んでみたのが舐めてかかっている証拠.

phpinfoを確認して....と思ったら/etc/php.d/json.iniは読んでいるけどモジュール情報はさっぱり.


はて?と思ってコマンドラインからPHPのバージョンを見ると

 $ php -v #=> 5.2.0(cgi-fcgi)

バージョン違いのPHPも入っている!
慌てて確認.

 $ which php #=> /usr/local/php
 $ which pear #=> /usr/local/per

どうやら,コンパイルして後付けで導入したPHP5.2にコマンドのパスが通っていたのが原因らしい.

$ /usr/bin/php -v

PHP Warning: PHP Startup: json: Unable to initialize module
Module compiled with module API=20060613, debug=0, thread-safety=0
PHP compiled with module API=20050922, debug=0, thread-safety=0
These options need to match
in Unknown on line 0

モジュールとPHPのバージョンが違うよ!とのエラーが確認できた.

気を取り直して,

$ sudo pear uninstall pecl/json
$ sudo /usr/bin/pear install pecl/json
$ sudo /etc/init.d/httpd stop && sudo /etc/init.d/httpd start

としたら解決.

サーバの設定や導入されているソフトウェアの状態を確認せずに作業にあたっちゃだめ!
という,じつに初歩的な教訓でした.