Hatena::ブログ(Diary)

seezoo-cms開発日誌 Twitter

2010-08-09

PHP5.1.x系でseezooを動かしたい場合は?

おそらくサーバー要件できついかもしれないのがjson_encode関数のサポートだと思います。

SimpleXML関数系はPHP5組み込みですが、json_encode関数のサポートはPHP5.2.0以上となっています。

よって、

PHP5.0 < 導入サーバーPHPバージョン < PHP5.2

の場合、json関連の処理がまったくできない事になってしまいます。

その場合、例外的ではありますが、PEAR::Services_JSONを入れたら何とかなります。


Servieces_JSONのDLとインストール


PEAR::Serveice_JSONからダウンロードできます。

PEARのパッケージマネージャがあれば、コマンドからインストールできます。

# pear install Services_JSON-1.0.2

幸いにしてPEARの依存関係がないので単体で使用できます。

ダウンロードした場合は、解凍してできるJSON.phpをsystem/application/libraries/以下に設置します。


設置方法


この関数はグローバルで使いたいので、CodeIgniterのヘルパー関数を追加します。

自作ヘルパーを作ってロードしても良いですし、

分からない方はsystem/application/helpers/seezoo_helper.phpに以下のコードを追加すればOKです。

// 念のために関数が存在するかチェック
if ( ! function_exists('json_encode') )
{
 // JSON.phpをincludeしておく
 require_once(APPPATH . 'libraries/JSON.php');
  
  function json_encode($data)
  {
    // Services_JSONインスタンス生成
    $json = new Services_JSON();
    // encodeして値を返却
    return $json->encode($data);
  }
}

perr installコマンドでインストールした場合はinclude_pathはセットされているので、上記requireは

require_once('JSON.php');

でOKとなります。

これでjson_encode関数が擬似的にサポートされます。*1

もしもPHP5.1.xとかでseezooを動かしたい!ということがあればお試しくださいませ。

あ、あとインストーラではPHP5.2以上のチェックを行っているので、そこをスキップしないといけないですね。

後日パッチ配布予定です。


要望が多ければ、次回バージョンアップではService_JSONをデフォルトで組み込んだPHP5.1.x系対応版とする予定です。*2

*1:※Services_JSONと組み込みのjson_encode関数は結果が若干違うようですが、JavaScript側でJSONを扱う際にはハッシュのキーの順は特に関係しないので、問題ないと思います

*2:もしjson_encodeをサポートさせる他のライブラリがあれば教えてください><

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証

トラックバック - http://d.hatena.ne.jp/seezoo-cms/20100809/1281349994