使用pecl在Linux上为lampp设置memcached

原来的post

首先,我想安装memcached ,而不是memcache。

我试图设置memcached在Ubuntu 12.10上从我的lampp服务器上工作,因为昨天。 我已经遵循了几乎所有可以find的教程。 最近的事情,我试图做的是:

在terminal

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 

看来这个人有同样的问题,但有不同的延伸。 当我尝试编译32位版本的扩展使用:

 phpize CFLAGS=-m32 CPPFLAGS=-m32 CCASFLAGS=-m32 ./configure 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 

问题是,我甚至不知道我是否在正确的道路上 。 如果有人能写出一步一步的指导如何得到这个工作或只是告诉我在哪里的问题是很好的。

UPDATE

执行sudo dpkg --add-architecture i386 sudo apg-get update sudo apt-get install libmemcached-dev:i386 libz-dev:i386sudo dpkg --add-architecture i386 sudo apg-get update sudo apt-get install libmemcached-dev:i386 libz-dev:i386phpize CFLAGS=-m32 CPPFLAGS=-m32 CCASFLAGS=-m32 ./configure make memcached phpize CFLAGS=-m32 CPPFLAGS=-m32 CCASFLAGS=-m32 ./configure make精细。 但它仍然不起作用。 再次检查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-memchad之前,你需要安装libmemcached和libz(及其头文件)的32位版本。

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

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

有一个很脏的方法来解决你的问题

/usr/lib/i386-linux-gnu/gcc/i686-linux-gnu/4.xx

并将libgcc_s.so复制到

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