【PHP】json_decode, json_encodeを使えるようにjsonをインストール
PHP5.2から標準で使用可能なjson_decodeとjson_encodeですが、PHP5.1の環境で使用するためのメモ。ここを参考に。
PEARの友達であるPECL(ピックル、PHP Extension Community Library)を使う。PECLはコンパイル済みであるため、PEARより高速に動作するらしい。
環境はCentOS5。すでにphp-develとphp-pearはインストール済み。
$ pecl install json
完了すると /usr/lib/php/modules/json.so が作成されている。これを読み込みたいので/etc/php.d/json.iniを作成し extension=json.so と記述。apacheを再起動すればjson_decodeが使えるはず。
<2008/12/19 追記> 別のシステムでjson_encodeを使おうと、この記事を参考にインストール。だけど、 $ pecl install json のあとになぜか/usr/local/lib/php/extensions/no-debug-zts-20050922/json.soにファイルが作成された。
このjson.soを/usr/lib/php/modulesにコピーしてもjsonが読み込まれず。apacheのエラーは下のような感じ
PHP Warning: PHP Startup: json: Unable to initialize module\nModule compiled with module API=20050922, debug=0, thread-safety=1\nPHP compiled with module API=20050922, debug=0, thread-safety=0\nThese options need to match\n in Unknown on line 0
調べてみると、コンパイルでインストールしたphpとyumでインストールしたphpが共存しているのが問題みたい。
$ which php
で調べると/usr/local/binにあるphpを参照してた。コンパイルでインストールしたphpを使っているみたいなので、/usr/local/bin/php*を削除して/usr/binのphpを参照するように変更。pecl, pear, peardevもあるようなら削除。
一回ログアウト。
これでもう一度peclからやってみると成功。