【PHP】json_decode, json_encodeを使えるようにjsonをインストール

PHP5.2から標準で使用可能なjson_decodejson_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からやってみると成功。