原帖
首先,我要安装memcached,而不是memcache。
从昨天开始,我正在尝试设置 memcached 以与我在 ubuntu 12.10 上的 lampp 服务器一起工作。我已经学习了几乎所有我能找到的教程。我最近尝试做的事情是:
在终端
apt-get install libmemcached-dev
cd /opt/lampp
./bin/pecl install memcached
然后在 php.ini 文件中添加 extension="memcached.so"。在此之后,我使用 /opt/lampp/lampp restart
当我尝试在浏览器中打开 php 脚本时,它刚刚被下载。运行 tail -20/opt/lampp/logs/php_error_log
这是我看到的:
PHP Warning: PHP Startup: Unable to load dynamic library '/opt/lampp/lib/php/extensions/no-debug-non-zts-20100525/memcached.so' - /opt/lampp/lib/php/extensions/no-debug-non-zts-20100525/memcached.so: wrong ELF class: ELFCLASS64 in Unknown on line 0
好像this guy有同样的问题,但扩展名不同。当我尝试使用以下命令编译 32 位版本的扩展时:
phpize
CFLAGS=-m32 CPPFLAGS=-m32 CCASFLAGS=-m32 ./configure
make
但是 make
抛出以下错误:
/usr/bin/ld: skipping incompatible /usr/local/lib/libmemcached.so when searching for -lmemcached
/usr/bin/ld: cannot find -lmemcached
/usr/bin/ld: cannot find -lz
collect2: error: ld returned 1 exit status
make: *** [memcached.la] Error 1
问题是我什至不知道我是否走在正确的道路上。如果有人可以编写简短的分步指南,说明如何使它正常工作,或者只是告诉我问题出在哪里,那就太好了。
更新
执行 sudo dpkg --add-architecture i386 sudo apg-get update sudo apt-get install libmemcached-dev:i386 libz-dev:i386
和 phpize CFLAGS=-m32 CPPFLAGS 后=-m32 CCASFLAGS=-m32 ./configure make
memcached 编译正常。但是它仍然不起作用。再次检查 php 错误日志后,我得到了这个
PHP Startup: Unable to load dynamic library '/opt/lampp/lib/php/extensions/no-debug-non-zts-20100525/memcached.so' - /opt/lampp/lib/libgcc_s.so.1: version `GCC_4.2.0' not found (required by /usr/lib/i386-linux-gnu/libstdc++.so.6) in Unknown on line 0
最佳答案
您走在正确的道路上 - 您的 lampp 是 32 位,而系统的其余部分(我假设)是 64 位。因此,当您安装 libmemcached 和编译后的 php-libmemcached 时,它是 64 位版本。这就是您收到“错误的 ELF 类”错误的原因。
在编译 32 位版本的 php-memchached 之前,您需要安装 32 位版本的 libmemcached 和 libz(及其头文件)。
您需要:
sudo dpkg --add-architecture i386
sudo apg-get 更新
sudo apt-get install libmemcached-dev:i386 libz-dev:i386
我认为这应该足以让您编译 32 位版本的 php-libmemcached。
关于php - 使用 pecl 在 linux 上为 lampp 设置 memcached,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14012492/