[PHP] PHP5.4でmemcacheモジュールをインストール

trait、array()の[]表記など、個人的には積極的に使っていきたいPHP5.4ですが、環境移行には何かと問題がつきものです。

私の場合は、PHPのsession管理でも利用していた「memcache」(dがつかないほう)を導入する際に問題が発生しました。

情報がまとまってるところが見つからず、それなりに面倒だったので、手順をまとめておきます。

実施した環境

  • CentOS 6.2
  • memcached 1.4.4
  • Apache 2.4.1 / Apache 2.2.2 (※どちらでもOKでした)
  • [php]memcache2.2.6 (※patchの関係で3.0.6だと入りませんでした)

先にやっておくこと

  • memcachedをインストール
  • Apacheをインストール
  • PHPをインストール

1. re2cのインストール(入ってない場合)

yum --enablerepo=rpmforge install re2c

2. memcacheモジュールの取得&patchあて

cd /usr/local/src
wget http://pecl.php.net/get/memcache-2.2.6.tgz
tar -xvzf memcache-2.2.6.tgz
cd memcache-2.2.6
mv memcache.c memcache.c.org
mv php_memcache.h php_memcache.h.org
wget -O memcache.c http://svn.php.net/viewvc/pecl/memcache/trunk/memcache.c?revision=319585
wget -O php_memcache.h http://svn.php.net/viewvc/pecl/memcache/trunk/php_memcache.h?revision=323682

3. memcacheモジュールのインストール

phpize
./configure
make
make test
make install

4. php.iniに拡張読み込みの追記

extension=memcache.so

5. Apache再起動

 

ポイントは言うまでもなく、SVNのtrunkからもってきた「memcache.c」「php_memcache.h」の2ファイルです。

 

https://bugs.php.net/bug.php?id=61289

http://grokbase.com/t/php/pecl-cvs/11bm5hxyv7/svn-pecl-memcache-trunk-memcache-c-php-mem

あたりの情報を元に、PHP5.4対応済みのファイルに差し替えた結果うまく通りました。

今回は元々利用していた「memcache」モジュールを使ったので罠にハマってますが、「memcached」のほうならすんなり通るのかもしれないです。

とは言え、プログラム内で使用していて簡単にモジュールを差し替えられない、という場合もあると思うので、今回のケースが参考になれば幸いです。