我的本机Apache / PHP设置正常使用PHP 5.3.15和memcache。那里的一切都很好。但我希望能够在本地运行PHP 5.2实例。因此,我认为最简单的方法是使用MAMP。
安装MAMP很简单,几秒钟就可以启动服务器。我唯一的问题是编译和安装5.2.17的memcache扩展(MAMP附带的版本)。
以下是我安装它的步骤:
$ /Applications/MAMP/bin/php/php5.2.17/bin/phpize
为5.2.17设置env。$ 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版本进行编译?
答案 0 :(得分:1)
好的,似乎如果你使用PHP 5.2.17,你必须使用memcache-2.2.5才能正确加载。我一直在考虑这个问题几天,决定编译一个旧版本,它工作了!!感谢上帝!