0

私のネイティブ Apache/PHP セットアップは、PHP 5.3.15 と memcache で正しく動作しています。すべてが良いです。しかし、ローカルでも PHP 5.2 インスタンスを実行できるようにしたいと考えています。そのため、これを行う最も簡単な方法は MAMP を使用することであると判断しました。

MAMP のインストールは簡単で、数秒でサーバーを立ち上げることができました。私が抱えている唯一の問題は、5.2.17 (MAMP に付属するバージョン) の memcache 拡張機能をコンパイルしてインストールすることです。

インストールするために行った手順は次のとおりです。

  1. PHP 5.2.17 ソース ファイルをダウンロードし、MAMP/bin/php/php5.2.17/include/php フォルダーに配置しました。
  2. memcache-2.2.7 をダウンロードし、内容を /tmp に抽出しました。
  3. $ /Applications/MAMP/bin/php/php5.2.17/bin/phpize5.2.17 の環境をセットアップします。
  4. $ 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
  5. $ make
  6. $ 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
  7. extension=memcache.so私のphp.iniに追加されました。
  8. サーバーを再起動しました。

これは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 バージョンでコンパイルされない理由を知っている人はいますか?

4

1 に答える 1

1

PHP 5.2.17 を使用している場合、正しくロードするには memcache-2.2.5 を使用する必要があるようです。私はこの問題について数日間考えていましたが、古いバージョンをコンパイルすることにしましたが、うまくいきました!! ああ、助かった!

于 2013-07-07T03:02:34.380 に答える