php - 使用 pecl 在 linux 上为 lampp 设置 memcached

标签 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

重新启动了 lampp

当我尝试在浏览器中打开 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:i386phpize 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/

相关文章:

linux - 在 Linux (x86_64) 上运行 Solaris (Sparc) 编译的程序

c - 在不关闭/重新打开的情况下更新不断增长的文件的状态

c - 在 Mac OSX(以及 Mint 和 CentOS)上构建 libmemcached 时出现问题

python - 哪个更快?内存缓存还是文件查询? (使用 maxmind geoip.dat 文件)

php - 错误 "PHP Error wasArray to string conversion"

php - 如何在 PHP 中记住我(cookie)

php - 购物车数量 php

php - 如何在 Laravel 5.5 中发送多封邮件

google-app-engine - 通过 Google App Engine 数据存储查看器删除实体不会从内存缓存中删除实体

linux -/usr/local安装的东西别人看不到