ひらい ぶらり Hi-Library

ぷろぐらみんぐについて。ときどきどうでもいいことについて。

CentOSでMessagePackのphpバインディングを使う

MessagePackを使おう!
ということになりまして。

MessagePackはシリアライズのスピード、シリアライズ後のサイズの縮小に優れているシリアライザーです。

詳しくは
google:MessagePack
で漁って見てください。手抜きなう。

CとRubyのライブラリとして開発されている人のことで、phpバインディングしなきゃいけないのかー、さっぱりわからないなーと思っていたら既に作られていました。

素敵!

http://redmine.msgpack.org/projects/msgpack/wiki/QuickStartPHP:QuickStartを見ると

$ git clone git@github.com:msgpack/msgpack.git
$ cd msgpack/php
$ phpize
$ ./configure
$ make
$ make install

これだけ!
ですが色々うまくいかなかったので、色々踏んだ手順を書いて行こうと思います。

はまったポイント

  1. phpizeが入ってない
  2. git clone git@github.com:msgpack/msgpack.gitでエラー(別の場所)
  3. CentOSでデフォルトで入るphpのバージョンが5.1.6(5.2以上でないと駄目)
  4. そもそもmsgpack.cが間違ってる(Warning: PHP Startup: Unable to load dynamic library 'modules/msgpack.so' - modules/msgpack.so: undefined symbol: RETURN_NUL in Unknown on line 0 )

4については次の記事で書きます。


0. 環境

CentOS 5.5
PHP 5.1.6
apache 2.2.3


1. phpizeが入ってない

yum install php-devel
解決。


2. git clone git@github.com:msgpack/msgpack.git

とりあえず書いてある通りに実行してみると

Permission denied (publickey).
fatal: The remote end hung up unexpectedly

エラー。

git clone http://github.com/msgpack/msgpack.git

もしくは

git clone http://github.com/hideyuki/messagepack-php-ext.git

上の方が公式ですね。下の方は制作者の方のもののようです。
サンプル通りにやりたいのであれば上の法で。


3. CentOSでデフォルトで入るphpのバージョンが5.1.6(5.2以上でないと駄目)

古いですねCentOS。てっきり5.2系が入ってるものだとばっかり思ってました。良くないですね。

こちらを参考にphp5.2.*を入れてください。
http://blog.livedoor.jp/kuroranger/archives/65182380.html:つれづれなる備忘録 : CentOS5.2にPHP5.2をYumでインストール

修正後の環境
CentOS 5.5
PHP 5.2.13
apache 2.2.3


とりあえずコレでphpize, ./configure, make, make installができます。
その後php.iniやphp.d/msgpack.iniでextension=msgpack.soって記述してphpを実行するとエラーがでました。(2010/09/08現在)
それについては次の記事で。