web-dev-qa-db-ja.com

pecl memcachedのインストール時のエラー

Pecl memcachedパッケージのインストールに本当に問題があります。

Yumやpear/peclのインストールコマンドを使って何の喜びもありませんでした Install PECL Memcached Error を参照し、手動で構成/作成を試みました

私はpeclを使用して最新の(memcached-2.2.0)をダウンロードし、次にuntar、phpize ...

--disable-memcached-saslを使用して構成すると、構成は完了しますが、失敗します。構文エラーのように見えるもの

In file included from /root/memcached-2.2.0/php_memcached_private.h:28,
                 from /root/memcached-2.2.0/php_memcached.c:26:
/root/memcached-2.2.0/php_libmemcached_compat.h:56: error: expected ‘=’, ‘,’, ‘;’, ‘asm’     or ‘__attribute__’ before ‘php_memcached_instance_st’
/root/memcached-2.2.0/php_memcached.c:328: error: expected declaration specifiers or ‘...’ before ‘php_memcached_instance_st’
/root/memcached-2.2.0/php_memcached.c:329: error: expected declaration specifiers or     ‘...’ before ‘php_memcached_instance_st’
/root/memcached-2.2.0/php_memcached.c:330: error: expected declaration specifiers or ‘...’ before ‘php_memcached_instance_st’
/root/memcached-2.2.0/php_memcached.c: In function ‘php_memc_get_impl’:
/root/memcached-2.2.0/php_memcached.c:594: warning: passing argument 4 of     ‘memcached_mget_by_key’ from incompatible pointer type
/usr/include/libmemcached/memcached_get.h:38: note: expected ‘char **’ but argument is of type ‘const char **’
/root/memcached-2.2.0/php_memcached.c: In function ‘php_memc_getMulti_impl’:

それ以上のものがありますが、うまくいけばそれは十分に有用な指標です

--with-libmemcached-dir =/usr/include/libmemcachedを使用すると、

checking for libmemcached location... configure: error: Unable to find memcached.h under /usr/include/libmemcached

しかし、IS memcached.hは

--with-libmemcached-dir = noを使用すると、configureにより

configure: error: no, libmemcached sasl support is not enabled. Run configure with --disable-memcached-sasl to disable this check

--disable-memcached-saslオプションを追加すると、構成は完了しますが、構文エラーで失敗します

ループに引っかかっているような気がします。

これは、memcachedを使用するためにサーバーを最初からセットアップしたのはこれが初めてではありません(たぶん、たまにですが)以前に問題があったことを覚えていません。

何かアイデアはありませんか?

これは良いリードのように見えました

http://blusmurf.net/2012/08/27/pecl-memcache-build-error/

しかし、まだ喜びではない

私はまた、php-memcachedのgithubページからこの問題を調査しています

https://github.com/php-memcached-dev/php-memcached/issues/69

私は今、2.1と2.2を試してみましたが、ファイルをハッキングしてmakeをビルドできるようにしています。まだ運がない...

12
joevallender

この組み合わせを使用して解決しました:

  1. libmemcached リリース1.0.16 -ソースからインストール
  2. php-memcached リリース2.1. -ソースからインストール&php.inにmemcached.soを追加

私はこの助けを願っています。

15
flyankur

SASLが必要ない場合は、次のように答えてください。

libmemcachedディレクトリ[no]:no --disable-memcached-sasl

18
Tom Mettam

ステップ1-SASLをインストールします。

yum install cyrus-sasl-devel

ステップ2-SASLをインストールしてlibmemcachedをコンパイルします。

cd ~
wget https://launchpad.net/libmemcached/1.0/1.0.18/+download/libmemcached-1.0.18.tar.gz
tar -zxvf libmemcached-1.0.18.tar.gz
cd libmemcached-1.0.18
./configure
make && make install

ステップ-インストールPHP Memcached:

pecl install memcached

libmemcached-dirは指定しないでください)

8
Saul Fautley

Saslサポートが必要ない場合は、ここに2.2.Xをインストールする簡単な方法があります。

pecl_memcached_ver="2.2.0"
pecl download memcached-${pecl_memcached_ver}
tar xzvf memcached-${pecl_memcached_ver}.tgz
cd memcached-${pecl_memcached_ver}/
phpize
./configure --disable-memcached-sasl
make
make install
cd ..
rm -r memcached-${pecl_memcached_ver}
echo "extension=memcached.so" > /etc/php5/fpm/conf.d/20-memcached.ini

次にphp5 -iを実行して、2.2.xが正しくインストールされたことをテストします

2
rynop

手順:

  1. Sudo apt-get install libmemcached libmemcached-dev
  2. Sudo mkdir -p/usr/lib/x86_64-linux-gnu/include/libmemcached && Sudo ln -s /usr/include/libmemcached/memcached.h/usr/lib/x86_64-linux-gnu/include/libmemcached/memcached。 h
  3. echo "/ usr/lib/x86_64-linux-gnu --disable-memcached-sasl" | Sudo /opt/phpfarm/inst/php-5.4.40/bin/pecl -C /opt/phpfarm/inst/php-5.4.40/etc/pear.confインストールmemcached

セットアップ:Ubuntu 14.04.x LTS x64(trusty tahr)phpfarm(最新)、pecl PHP 5.4.40 memcached 2.2.0

注:もちろん、システムに応じてパスを置き換える必要があります

1
Roman NL

Libmemcached-develバージョン1.0.16がインストールされたCentOS 7.2では、質問に/ usrで答える必要があります。

libmemcached directory [no] : /usr

0
alamaby

手順@rynopは非常に優れており、すべて素晴らしいです!

では、展開用にパッケージ化したいですか?ターゲットデプロイメントはUbuntu 14.04 LTSで実行されており、上流のphp5-memcached単純な。debファイルとしてのパッケージ。

このためには、 fpmを見てください を使用します。これは、「Freaking Package Manager」を意味します(sic)。ほとんどすべてのパッケージを作成するために作成されました。

@rynop手順の後、これが私がしたことです:

// Rest of @rynop procedure, modulo this configure options
./configure --enable-memcached-igbinary --disable-memcached-sasl

インストール jordansissel/fpm

apt-get install -y pkg-config Ruby-dev gcc
gem install fpm

次に、交換するパッケージの内容を確認し、目的に合わせて複製しましょう。

dpkg --list | grep php5-memcached
find /var/cache/apt -type f -name '*php5-memcached*'
dpkg -c /var/cache/apt/archives/php5-memcached_2.1.0-6build1_AMD64.deb

いくつかのフォルダーしか必要ないことが出力でわかり、作成しました。

mkdir -p etc/php5/mods-available/
// Adjust memcached.ini to suit your tastes, then prepare it for packaging
cp memcached.ini etc/php5/mods-available/
// Make sure the usr/lib/php5/foo path matches in 
// the result of `dpkg -c` you issued
mkdir -p usr/lib/php5/20121212/
cp modules/memcached.so usr/lib/php5/20121212/

魔法が起こります

fpm -s dir -t deb -n php5-memcached -v 2.2.0-wpd -m '<[email protected]>' --description 'PHP 5.5 PECL igbinary + memcached support' -d libmemcached10 etc/ usr/
0
renoirb