3

元の投稿

まず、memcacheではなくmemcachedをインストールしたいと思います。

昨日から、ubuntu12.10のlamppサーバーで動作するようにmemcachedを設定しようとしています。私は、見つけたほとんどすべてのチュートリアルをすでに実行しました。私がやろうとした最新のことは次のとおりです。

ターミナルで

apt-get install libmemcached-dev 
cd /opt/lampp
./bin/pecl install memcached

次に、php.iniファイルにextension="memcached.so"を追加します。この後、私は使用してlamppを再起動しました/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

ただし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 makememcachedは正常にコンパイルされます。ただし、それでも機能しません。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
4

2 に答える 2

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をコンパイルするにはこれで十分だと思います。

于 2012-12-23T17:04:55.830 に答える
1

あなたの問題を解決するための汚い方法があります

に行く/usr/lib/i386-linux-gnu/gcc/i686-linux-gnu/4.x.x

libgcc_s.soをにコピーしました

/opt/lampp/liblibgcc_s.so.1以前のファイルを上書きするために名前を変更しました。

于 2012-12-28T16:13:43.633 に答える