Applicable to:
- Plesk Onyx for Linux
- Plesk for Linux
Question
How to install/uninstall Memcached extension for Plesk PHP handlers?
Answer
Warning: This is a process that it is done at your own will and risk which is not supported by Plesk.
Note: Memcached extension is only available/supported up to PHP 7.1
Since Memcached extension is not included in Plesk PHP packages, it can be installed manually:
- Log into the server via SSH and prepare the environment:
For rpm-based OS (CentOS, RHEL, CloudLinux)
# wget -q -O - http://www.atomicorp.com/installers/atomic | sh
# yum install make memcached gcc libmemcached-devel zlib-devel plesk-php*-develNote: Atomic repositories are being used instead of the CentOS ones because of newer package versions
For deb-based OS (Debian, Ubuntu)# apt install memcached
# apt install autoconf automake gcc libmemcached-dev libhashkit-dev pkg-config plesk-php..-dev zlib1g-dev - Perform the memcached installation for PHP 7.x:
Note: in the example below, instructions for PHP 7.1 are provided. Replace '7.1' with the required PHP version
# /opt/plesk/php/7.1/bin/pecl install memcached
Warning: Only for CentOS 6: Before proceeding with this step check the following
Check the binaries that are going to be used for CentOS 6Be sure that the binaries used by the process are from the newer version available on the server by linking them as follow (The example below is for version 2.68):
# mv /usr/bin/autoconf{,.bkp}
# ln -s /usr/bin/autoconf268 /usr/bin/autoconf
# mv /usr/bin/autom4te{,.bkp}
# ln -s /usr/bin/autom4te268 /usr/bin/autom4te
-
Register extension in configuration file:
# echo "extension=memcached.so" > /opt/plesk/php/7.1/etc/php.d/memcached.ini
-
Update PHP handlers information:
# plesk bin php_handler --reread
-
Restart Apache and PHP-FPM services at Plesk > Tools & Settings > Services Management
Note: in the example below, instructions for PHP 7.1 are provided. Replace '7.1' with the required PHP version.
- Remove memcached configuration file:
# rm /opt/plesk/php/7.1/etc/php.d/memcached.ini
- Uninstall the extension:
# /opt/plesk/php/7.1/bin/pecl uninstall memcached
- Update PHP handlers information:
# plesk bin php_handler --reread
- Restart Apache and PHP-FPM services at Plesk > Tools & Settings > Services Management.
Comments
58 comments
Hi @Lethalmiko,
The provided solution is valid for Plesk PHP handlers only and does not work for system PHP
I updated the article in order to avoid this misunderstanding and added the installation steps for "memcached" for OS PHP to the "Additional information" section as well
Here are the steps for "memcached" installation for OS PHP:
# apt install memcached
# apt-get install php-memcached
# plesk bin php_handler --reread
# service apache2 restart
# service php72-fpm restart
After this, PHP info page started returning the "memcached"
@Nikita Nikushkin
I actually ended up solving the problem myself with more research. What I did:
---
# apt autoremove
# apt install memcached
# apt install autoconf automake gcc libmemcached-dev libhashkit-dev pkg-config plesk-php72-dev zlib1g-dev libsasl2-dev build-essential php7.2-dev
# nano /usr/share/psa-pear/pear/pecl
---
[Edited pecl file]
Remove -n flag from the last line of /usr/share/psa-pear/pear/pecl utility. It is now:
exec $PHP -C -q $INCARG -d date.timezone=UTC -d output_buffering=1 -d variables_order=EGPCS -d safe_mode=0 -d register_argc_argv="On" $INCDIR/peclcmd.php "$@"
---
# /usr/share/psa-pear/pear/pecl install memcached
[Installs to '/usr/lib/php/20170718/memcached.so']
# echo "extension=memcached.so" > /etc/php/7.2/mods-available/memcached.ini
# ln -s /etc/php/7.2/mods-available/memcached.ini /etc/php/7.2/cli/conf.d/20-memchached.ini
# ln -s /etc/php/7.2/mods-available/memcached.ini /etc/php/7.2/fpm/conf.d/20-memchached.ini
# plesk bin php_handler --reread
# /etc/init.d/php7.2-fpm restart && /etc/init.d/apache2 restart && /etc/init.d/nginx restart
Hello @Lethalmiko,
Thank you for the feedback! Other users may find this solution useful as well.
Hi,
Working with PHP7.3 only, do we need to install the plesk-php56-devel plesk-php70-devel plesk-php71-devel plesk-php72-devel?
Also, I just copied and pasted the entire line, if answer to first question is no, can I simply 'yum remove plesk-php56-devel plesk-php70-devel plesk-php71-devel plesk-php72-devel' ?
Thanks!
Hello @Mario !
Since you use only PHP 7.3, you don't need to install plesk-php56-devel, plesk-php70-devel, plesk-php71-devel, and plesk-php72-devel packages.
You may remove them using the following steps:
1. List installed packages:
# rpm -qa | grep devel | grep php
plesk-php73-devel-7.3.5-1centos.7.190506.1021.x86_64
plesk-php72-devel-7.2.18-1centos.7.190506.1021.x86_64
plesk-php71-devel-7.1.29-1centos.7.190506.1021.x86_64
plesk-php56-devel-5.6.40-centos7.19011112.x86_64
2. Remove packages without dependensies one by one, for example:
# rpm -evh --nodeps plesk-php56-devel
# rpm -evh --nodeps plesk-php71-devel
# rpm -evh --nodeps plesk-php72-devel
Hi! I am having issues on Ubuntu 14.04 Trusty with Plesk Onyx
Version 17.8.11 Update #53
I have different PHP Versions active on the server:
5.5.9 which is solely needed by plesk in case I understand that right
7.1 and 7.2
I want to get memcached installed on the 7.1 and 7.2, yet I am using those PHP versions for the applications we are running.
I get the following error following precisely the explanations given here:
"/opt/plesk/php/7.1/bin$ sudo pecl install memcached
pecl/memcached requires PHP (version >= 7.0.0), installed version is 5.5.9-1ubuntu4.29
pecl/memcached can optionally use PHP extension "igbinary" (version >= 2.0)
pecl/memcached can optionally use PHP extension "msgpack" (version >= 2.0)
No valid packages found
install failed"
Installed memcached version is the latest release 1.5.1
I am complying with each and any step given in the help section but there is no way to achieve it.
Help would be much appreciated and thanks in advance!
Hello @Marcel Aulenbacher!
As I can see from the output provided, the command was executed under system PHP 5.5.9 but not under PHP 7.1.
# /opt/plesk/php/7.1/bin$ sudo pecl install memcached
Please install memcached using the commands provided in the instruction above in section "Memcached installation" for PHP 7.x.
Dear @Maxim Krasikow.
Thank you for your reply. Using the root user php -v turns out to reply:
PHP 7.1.29 (cli) (built: May 6 2019 11:09:56) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.1.0, Copyright (c) 1998-2018 Zend Technologies
with the ionCube PHP Loader (enabled) + Intrusion Protection from ioncube24.com (unconfigured) v10.2.1, Copyright (c) 2002-2018, by ionCube Ltd.
with Zend OPcache v7.1.29, Copyright (c) 1999-2018, by Zend Technologies
Could you please let me know what I have to do to execute the command under PHP 7.x?
Hi @Marcel Aulenbacher,
Please, run one of these commands to install the extension to the required Plesk PHP 7.X version:
OR
OR
OR
Hi @Nikita Nikushkin!
Thank you for your input. As before mentioned and explained in my original post, this is exactly what I am doing with the root user. As furthermore described this results in the documented problems.
The problem, as stated, is that apparantly the server tries to use PHP in the 5.6.9 version, even the root user is set to use PHP 7.1 for the execution of the commands.
Regards!
Hi @Marcel Aulenbacher,
This error:
is most probably occurs because sudoers run pecl under the system PHP
I see that "php -v" returned the following:
However, it returns the information for the Plesk PHP 7.1, not for the system one, for some reason
I suggest repeat these steps:
1. Login as a root user
2. Run this command (without sudo):
If the issue still occurs I suggest creating a request to the Support Department for further issue investigation:
How to submit a request to Plesk support?
On my ubuntu 18.04 LTS I've this issue:
root@100asa:~# service php72-fpm restart
Failed to restart php72-fpm.service: Unit php72-fpm.service not found.
Hi @Remigio, there was a typo in command, it should have a dot "." in the service name, try that way:
service php7.2-fpm restart
Hi, i get
/opt/plesk/php/7.2/bin/pecl install memcached
WARNING: channel "pecl.php.net" has updated its protocols, use "pecl channel-update pecl.php.net" to update
pecl/memcached can optionally use PHP extension "igbinary" (version >= 2.0)
pecl/memcached can optionally use PHP extension "msgpack" (version >= 2.0)
Could not download from "https://pecl.php.net/get/memcached-3.1.4.tgz", cannot download "pecl/memcached" (Connection to `ssl://pecl.php.net:443' failed: )
Error: cannot download "pecl/memcached"
Download failed
install failed
when i follow this tutorial.
pecl channel-update pecl.php.net
gives a "command not found"
can anyone help? thx.
Hi @Christian te Kock,
"Connection to `ssl://pecl.php.net:443' failed" looks like an intermittent issue.
As far as I see, pecl.php.net works just fine now.
Hi there,
thank you for the manual! I installed memcached successful.
It is working for PHP 7.1, 7.2 and 7.3.
How can i add PHP 7.4 support?
This way?:
# yum install plesk-php74-devel
and then follow step 2:
# /opt/plesk/php/7.4/bin/pecl install memcached
Thank you in advance!
Thomas
Hello @Thomas Hellwig
Yes, you are right.
Please also add the information about extension to the required location:
# echo "extension=memcached.so" > /opt/plesk/php/7.4/etc/php.d/memcached.ini
Hi Alexey,
so I have to do these steps if I want to install memcached for php7.4 AND already followed the guide above:
Is this correct :)?
Thank you again!
Hi Thomas Hellwig,
Correct!
But remember also to re-read the PHP handlers and restart the webserver after adding the extension in the .ini (step 2 > PHP 7.x > steps 4 and 5) :)
Hello
How to disable memecached on some directories
Regards
Hi El fadili bouchta,
This article describes only the steps how to install/uninstall the extension. If you need the specifics of how to use it for your needs, I would recommend you checking the official documentation at https://www.php.net/memcached.
You can also ask this question on their page on gihub: https://github.com/memcached/memcached/issues.
I followed these instructions successfully until I got to the last step:
plesk bin php_handler --reread
the error I get back is:
[root@server ~]# plesk bin php_handler --list
The service node must be a web server node.
exit status 1
I read that going into Plesk and clicking "refresh components" fixed this issue but when I got in there,
ALL items in the list show "The component was not installed" (including nginx, apache, webmail, PHP, literally the entire list)
All virtual hosts are stuck on an older version of PHP run as CGI, the NPM options have disappeared.
Hi @Kevin Johnson,
If you did not try to click Refresh Components, please give it a try, as it may change 'not installed' status of all components to a correct one. If this does not solve the issue,consider submitting a support request to Plesk directly or to a reseller, depending on where the license was purchased.
hi Yulia Plokhotnikova, it literally says in the first sentence that I DID do that.
@Kevin Johnson,
The error you got was not reported previously to Plesk, so investigation is required. Plesk submit a support request to Plesk directly or to a reseller, depending on where the license was purchased.
Hi @Marc López With Centos 8.2 and Plesk 18.0.29 "make" package is required "yum install make".
Do you suggest to build memcached with default parameters?
libmemcached directory [no] :
zlib directory [no] :
use system fastlz [no] :
enable igbinary serializer [no] :
enable msgpack serializer [no] :
enable json serializer [no] :
enable server protocol [no] :
enable sasl [yes] :
enable sessions [yes] :
Thank you
Hello Sysmanaging
Thank you for your notice about "make", the corresponding step was updated.
I would suggest default parameters in case you don't have some specific prerequisites.
So, I've successfully performed all the steps described. I got memcached responding on port 11211, I got the memcahed.so extension in PHP 7.4's modules directory, I got the memcached.ini file in the PHP's etc directory. Yet, the class Memcached cannot be found. Any ideas?
Please sign in to leave a comment.