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をビルドできるようにしています。まだ運がない...
この組み合わせを使用して解決しました:
私はこの助けを願っています。
SASLが必要ない場合は、次のように答えてください。
libmemcachedディレクトリ[no]:no --disable-memcached-sasl
ステップ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
は指定しないでください)
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が正しくインストールされたことをテストします
手順:
セットアップ:Ubuntu 14.04.x LTS x64(trusty tahr)phpfarm(最新)、pecl PHP 5.4.40 memcached 2.2.0
注:もちろん、システムに応じてパスを置き換える必要があります
Libmemcached-develバージョン1.0.16がインストールされたCentOS 7.2では、質問に/ usrで答える必要があります。
libmemcached directory [no] : /usr
手順@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/