PHP 8.4の環境に、memcachedをインストールする方法。
libmemcachedは、古いバージョンのソースのため新しいgccでは、ワーニングが多々表示されるのと、一部コンパイルエラーが発生するためパッチを適用します。
1.libmemcachedのインストール
cd /usr/local/src
mkdir memcached
cd memcached
wget https://launchpad.net/libmemcached/1.0/1.0.18/+download/libmemcached-1.0.18.tar.gz
tar xvzf libmemcached-1.0.18.tar.gz
cd libmemcached-1.0.18
make
make install
#パッチをダウンロードする
#https://github.com/gentoo/gentoo/blob/master/dev-libs/libmemcached/files/libmemcached-1.0.18-gcc7.patch
をダウンロードする
このファイルを、/usr/local/src/memcachedに配置する
#パッチがない場合
cat > /usr/local/src/memcached/libmemcached-1.0.18-gcc7.patch << EOF
gcc-7 fails the build as:
clients/memflush.cc: In function 'int main(int, char**)':
clients/memflush.cc:42:22: error: ISO C++ forbids comparison between pointer and integer [-fpermissive]
if (opt_servers == false)
^~~~~
opt_servers is declated as 'static char *opt_servers= NULL;'
diff --git a/clients/memflush.cc b/clients/memflush.cc
index 8bd0dbf..7641b88 100644
--- a/clients/memflush.cc
+++ b/clients/memflush.cc
@@ -39,7 +39,7 @@ int main(int argc, char *argv[])
{
options_parse(argc, argv);
- if (opt_servers == false)
+ if (!opt_servers)
{
char *temp;
@@ -48,7 +48,7 @@ int main(int argc, char *argv[])
opt_servers= strdup(temp);
}
- if (opt_servers == false)
+ if (!opt_servers)
{
std::cerr << "No Servers provided" << std::endl;
exit(EXIT_FAILURE);
EOF
パッチを適用する
cd /usr/local/src/memcached/libmemcached-1.0.18
patch -p1 < ../libmemcached-1.0.18-gcc7.patch
ビルド+インストールする
make
make install
2.memcachedのインストール
cd /usr/local/src
wget https://pecl.php.net/get/memcached-3.3.0.tgz
tar xvzf memcached-3.3.0.tgz
cd memcached-3.3.0
/usr/local/bin/phpize
./configure
make
make install
「/usr/local/lib/php/extensions/no-debug-zts-20240924/」に「memcached.so」が配置される。
3.memcacheをインストール
cd /usr/local/src
wget https://pecl.php.net/get/memcache-8.2.tgz
tar xvzf memcache-8.2.tgz
cd memcache-8.2
/usr/local/bin/phpize
./configure
make
make install
「/usr/local/lib/php/extensions/no-debug-zts-20240924/」に「memcache.so」が配置される。
php.iniを編集する
vi /usr/local/lib/php.ini
---
extension=memcached.so
extension=memcache.so
---