memcached igbinary support

9.2k Views Asked by At

Below is my phpinfo() output for memcached

memcached

memcached support   enabled
Version 2.1.0
libmemcached version    1.0.4
Session support yes
igbinary support    no
json support    no

I'm using an AWS Linux AMI which is redhat based I believe and uses YUM.

How can I get igbinary support enabled?

Does this have to happen at memcached installation time? I have memcached already working so is there a way I can add this support in now?

thank you

2

There are 2 best solutions below

4
On BEST ANSWER

I used to compile the memcached stack manually, which included igbinary. This was before I started using the remi repo, which provides updated packages without all the overhead of manual compilation.

Here are the notes I used when I used to compile igbinary manually:

Had to scp the source from another computer due to lack of direct links, the next steps assume pecl/memcached files are local and extracted
$ -> wget http://pecl.php.net/get/igbinary-1.1.1.tgz
$ -> tar -xzvf igbinary-1.1.1.tgz
$ -> cd igbinary-1.1.1
$ -> phpize
$ -> ./configure # No need for extra config params
$ -> make
$ -> make install # This should copy the resulting .so file to the php dir where all modules are stored
$ -> /etc/init.d/httpd restart # I remember having to do this for phpinfo to reflect the setting correctly after the udpate

Now, if you view your phpinfo (or php -i from cli) igbinary support should be set to yes.

-- Update --

Be sure you have the following line in php.ini or igbinary.ini where php can read it:

; Enable igbinary extension module
extension=igbinary.so

-- Update #2 --

Forgot to mention, you need to compile memcached with the following flag in order for it to use igbinary:

--enable-memcached-igbinary

-- Update #3 --

In case anyone stumbles across this in the future. Manually maintaining the PHP stack along with commonly used extensions is a pain, and usually not worth the extra effort. You are better off using your distro's package manager to handle all the heavy lifting, an example of installing php with memcached with igbinary support would look like:

yum install php php-cli php-pecl-memcached php-pecl-igbinary

If your distro's upstream version of php is older and you wish to use a newer version, take a look at the REMI repo: http://blog.famillecollet.com/pages/Config-en

0
On

Another option, if you don't want to set it up manually, is to use PECL.

Here's an example in Amazon Linux 2:

yum -y install php-pecl-igbinary libmemcached-devel

# Install igbinary first
yes "" | pecl install igbinary
sed -i -e '/extension="igbinary.so"/d' /etc/php.ini
echo 'extension="igbinary.so"' > /etc/php.d/41-memcached.ini

# Then install memcached, being sure to set the enable-memcached-igbinary option to yes
pecl install --configureoptions 'with-libmemcached-dir="no" with-zlib-dir="no" with-system-fastlz="no" enable-memcached-igbinary="yes" enable-memcached-msgpack="no" enable-memcached-json="no" enable-memcached-protocol="no" enable-memcached-sasl="yes" enable-memcached-session="yes"' memcached
sed -i -e '/extension="memcached.so"/d' /etc/php.ini
echo 'extension="memcached.so"' >> /etc/php.d/41-memcached.ini