It's raining cats and dogs.

無駄なことなんてないはず

phpenvで作ったphp環境にpeclのライブラリをインストールする

phpenvでつくったphpの環境にpeclのライブラリをインストールした時のメモ。

pearのライブラリなんかはcomposerでプロジェクトローカルにインストールしてしまうんだけど、peclってsystem php?な環境にpeclコマンドでpecl install hogehogeみたいにインストールしたことしかないし、peclコマンド自体みつからなかったので、そういえばphpenvで作った環境毎にインストールする時ってどうやるんだろうかと思ってしらべた。

結論phpizeでビルドする。らしい。

Memcachedでもいれてみる

僕の中ではメジャーなMemcachedモジュールを入れてみる。

http://pecl.php.net/package/memcached

※わけあってbeta版を入れる。

$ cd /tmp
# 適当なディレクトリにダウンロード
$ wget http://pecl.php.net/get/memcached-2.2.0b1.tgz
# 解凍
$ tar zxvf memcached-2.2.0b1.tgz
$ cd memcached-2.2.0b1
# phpizeを使う
$ phpize
# ビルドする
$ ./configure
$ make
$ make install
Installing shared extensions:     $HOME/.phpenv/versions/5.5.8/lib/php/extensions/no-debug-non-zts-20121212/

これでホームディレクトリ以下のphpenvの環境にmemcached.soというファイルを作ってくれる。

$ ls $HOME/.phpenv/versions/5.5.8/lib/php/extensions/no-debug-non-zts-20121212/
... memcached.so ...

ただ、これだけだと使えないので、php.iniで読み込んであげる必要があるけど、php.iniに書くものアレなので$HOME/.phpenv/versions/5.5.8/etc/conf.d/memcached.iniというファイルを作って読み込ませるようにする。

ファイルの内容は

$ cat $HOME/.phpenv/versions/5.5.8/etc/conf.d/memcached.ini
extension=memcached.so

これだけ。

あとはphp -iで確認

$ php -i | grep memcached
Additional .ini files parsed => $HOME/.phpenv/versions/5.5.8/etc/conf.d/memcached.ini,
memcached
memcached support => enabled
libmemcached version => 1.0.17
memcached.compression_factor => 1.3 => 1.3
memcached.compression_threshold => 2000 => 2000
memcached.compression_type => fastlz => fastlz
memcached.serializer => php => php
memcached.sess_binary => 0 => 0
memcached.sess_connect_timeout => 1000 => 1000
memcached.sess_consistent_hash => 0 => 0
memcached.sess_lock_expire => 0 => 0
memcached.sess_lock_max_wait => 0 => 0
memcached.sess_lock_wait => 150000 => 150000
memcached.sess_locking => 1 => 1
memcached.sess_number_of_replicas => 0 => 0
memcached.sess_prefix => memc.sess.key. => memc.sess.key.
memcached.sess_randomize_replica_read => 0 => 0
memcached.sess_remove_failed => 0 => 0
memcached.sess_sasl_password => no value => no value
memcached.sess_sasl_username => no value => no value
memcached.store_retry_count => 2 => 2
memcached.use_sasl => 0 => 0
Registered save handlers => files user memcached

なんかいろいろ設定されたみたい。