[英]PHP API version mismatch compiling memcache for MAMP on Mac
我的本機Apache / PHP安裝程序可以與PHP 5.3.15和memcache一起正常使用。 那里一切都很好。 但是我也希望能夠在本地運行PHP 5.2實例。 因此,我認為最簡單的方法是使用MAMP。
安裝MAMP非常容易,只需幾秒鍾即可啟動服務器。 我唯一的問題是編譯並安裝5.2.17(MAMP隨附的版本)的memcache擴展。
這是我執行安裝步驟:
$ /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
。 這是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版本進行編譯嗎?
好的,因此,如果您使用的是PHP 5.2.17,則必須使用memcache-2.2.5才能正確加載。 我已經考慮了幾天這個問題,決定編譯一個較舊的版本,並且有效! 感謝上帝!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.