J'ai eu de réelles difficultés à installer le paquet pecl memcached.
N'a eu aucune joie avec aucune commande d'installation yum ou pear/pecl je me suis référé à cette question Installez PECL Memcached Error et a commencé à essayer de configurer/make manuellement
J'utilise pecl pour télécharger la dernière version (memcached-2.2.0), puis désarchiver, phpize ...
Si je configure avec --disable-memcached-sasl, la configuration est terminée mais la commande échoue. Avec ce qui ressemble à des erreurs de syntaxe
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’:
Il y a plus de cela, mais j'espère que c'est un indicateur assez utile
Si j'utilise --with-libmemcached-dir =/usr/include/libmemcached, je reçois
checking for libmemcached location... configure: error: Unable to find memcached.h under /usr/include/libmemcached
Mais ce IS où memcached.h est
Si j'utilise --with-libmemcached-dir = no configure donne
configure: error: no, libmemcached sasl support is not enabled. Run configure with --disable-memcached-sasl to disable this check
Si j'ajoute l'option --disable-memcached-sasl, la configuration est terminée mais échoue à nouveau avec les erreurs de syntaxe.
Sentez-vous comme je suis coincé dans une boucle.
Ce n'est pas la première fois que je configure un serveur à partir de zéro pour utiliser memcached (bien que la première fois depuis longtemps, je suppose), je ne me souviens pas d'avoir eu de problèmes auparavant.
Des idées s'il vous plaît quelqu'un?
Cela ressemblait à une bonne piste
http://blusmurf.net/2012/08/27/pecl-memcache-build-error/
Mais pas encore la joie
J'ai également enquêté sur ce problème à partir de la page github de php-memcached
https://github.com/php-memcached-dev/php-memcached/issues/69
J'ai essayé avec les versions 2.1 et 2.2 maintenant, en piratant les fichiers pour essayer de construire. Toujours pas de chance ...
Résolu en utilisant cette combinaison:
J'espère que cette aide.
Si vous n'avez pas besoin de SASL, répondez avec ceci:
répertoire libmemcached [no]: no --disable-memcached-sasl
Étape 1 - Installez SASL:
yum install cyrus-sasl-devel
Étape 2 - Compilez libmemcached avec SASL installé:
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
Étape 3 - Installez PHP Memcached:
pecl install memcached
(Ne pas spécifier libmemcached-dir
)
Si vous n’avez pas besoin de l’assistance sasl, voici un moyen facile d’installer 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
Ensuite, lancez php5 -i
pour vérifier qu'il a installé 2.2.x correctement
Pas:
Configuration: Ubuntu 14.04.x LTS x64 (trusty tahr) Phpfarm (last) avec pecl PHP 5.4.40 Memcached 2.2.0
Remarque: évidemment, vous devez remplacer les chemins d'accès en fonction de votre système
Sur CentOS 7.2 avec la version 1.0.16 de libmemcached-devel installée, vous devez répondre à la question avec/usr :
libmemcached directory [no] : /usr
La procédure @rynop est très bonne et tout est génial!
Maintenant, que diriez-vous que vous souhaitez package pour le déploiement? Le déploiement de ma cible s’exécute sur Ubuntu 14.04 LTS et j’ai envie de remplacer le paquet php5-memcached
en amont par un simple fichier .deb.
Pour cela, regardez regardez fpm qui signifie "Freaking Package Manager} _" (sic). Son fait pour créer des paquets de presque n'importe quoi.
Après la procédure @rynop, voici ce que j’ai fait:
// Rest of @rynop procedure, modulo this configure options
./configure --enable-memcached-igbinary --disable-memcached-sasl
Installer jordansissel/fpm
apt-get install -y pkg-config Ruby-dev gcc
gem install fpm
Ensuite, vérifiez le contenu du package que vous souhaitez remplacer et laissez-le répliquer à nos propres fins.
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
J'ai compris dans la sortie que je n'avais besoin que de quelques dossiers, je les ai donc créés.
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/
La magie va arriver
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/