私のネイティブ Apache/PHP セットアップは、PHP 5.3.15 と memcache で正しく動作しています。すべてが良いです。しかし、ローカルでも PHP 5.2 インスタンスを実行できるようにしたいと考えています。そのため、これを行う最も簡単な方法は MAMP を使用することであると判断しました。
MAMP のインストールは簡単で、数秒でサーバーを立ち上げることができました。私が抱えている唯一の問題は、5.2.17 (MAMP に付属するバージョン) の memcache 拡張機能をコンパイルしてインストールすることです。
インストールするために行った手順は次のとおりです。
- PHP 5.2.17 ソース ファイルをダウンロードし、MAMP/bin/php/php5.2.17/include/php フォルダーに配置しました。
- memcache-2.2.7 をダウンロードし、内容を /tmp に抽出しました。
$ /Applications/MAMP/bin/php/php5.2.17/bin/phpize
5.2.17 の環境をセットアップします。$ MACOSX_DEPLOYMENT_TARGET=10.8 CFLAGS='-O3 -fno-common -arch i386 -arch x86_64' LDFLAGS='-O3 -arch i386 -arch x86_64' CXXFLAGS='-O3 -fno-common -arch i386 -arch x86_64' ./configure --with-php-config=/Applications/MAMP/bin/php/php5.2.17/bin/php-config
$ make
$ cp /tmp/memcache-2.2.7/memcache-2.2.7/modules/memcache.so /Applications/MAMP/bin/php/php5.2.17/lib/php/extensions/no-debug-non-zts-20060613
extension=memcache.so
私のphp.iniに追加されました。- サーバーを再起動しました。
これはphpizeからの出力でした:
Configuring for:
PHP Api Version: 20041225
Zend Module Api No: 20060613
Zend Extension Api No: 220060519
configure.in:3: warning: prefer named diversions
configure.in:3: warning: prefer named diversions
PHP ログに次のエラーが表示されます。
04-Jul-2013 00:32:03] PHP Warning: PHP Startup: memcache: Unable to initialize module
Module compiled with module API=20090626, debug=0, thread-safety=0
PHP compiled with module API=20060613, debug=0, thread-safety=0
These options need to match in Unknown on line 0
phpize コマンドから、拡張機能が正しい API バージョンで構築されていると考えたでしょう。しかし、API ログはそうではないと教えてくれます。20090626 が私のネイティブ PHP の API バージョンであることにも注意してください。だから私はまだ私のネイティブバージョンでコンパイルしていると思います(確かではありません)。
正しい API バージョンでコンパイルされない理由を知っている人はいますか?