原始帖子
首先,我想安装 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
答案 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
以覆盖以前的文件。