使用pecl在linux上为lampp设置memcached

时间:2012-12-23 16:13:15

标签: php linux memcached pecl lampp

原始帖子

首先,我想安装 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

2 个答案:

答案 0 :(得分:1)

你是在正确的道路上 - 你的灯泡是32位,而系统的其余部分(我假设)是64位。因此,当您安装libmemcached时,编译的php-libmemcached是64位版本。这就是为什么你得到“错误的ELF类”错误。

在编译32位版本的php-memchached之前,你需要安装32位版本的libmemcached和libz(及其标题)。

你需要: sudo dpkg --add-architecture i386 sudo apg-get update sudo apt-get install libmemcached-dev:i386 libz-dev:i386

我认为应该足以让你编译32位版本的php-libmemcached。

答案 1 :(得分:1)

有一种解决问题的方法

转到/usr/lib/i386-linux-gnu/gcc/i686-linux-gnu/4.x.x

并将libgcc_s.so复制到

/opt/lampp/lib并将其重命名为libgcc_s.so.1以覆盖以前的文件。