解决宝塔面板中安装的 phpredis 扩展缺少 zstd 、igbinary 、msgpack 这几个库

系统版本:debian 11
宝塔版本:7.9.8
PHP版本:7.4

发现很多人不会在宝塔面板环境下安装 PHP 扩展,所以我写了个宝塔安装第三方 PHP 扩展的简易教程,切记要根据你系统中安装的 PHP 版本调整命令,不要无脑照抄!

#进入 /root 目录
cd ~

#下载 msgpack PHP扩展包
wget https://pecl.php.net/get/msgpack -O msgpack.tgz

#解压 msgpack PHP扩展包
tar -zxvf msgpack.tgz

#进入 msgpack 解压后的程序目录
cd ~/msgpack-*

#检测 PHP 环境并生成 configure 配置文件
/www/server/php/74/bin/phpize

#检测系统环境并生成 make 编译文件
./configure --with-php-config=/www/server/php/74/bin/php-config

#编译并安装
make && make install

#写入 msgpack.so 扩展调用路径到 php.ini 配置文件
echo -e "\n[msgpack]\nextension = /www/server/php/74/lib/php/extensions/no-debug-non-zts-20190902/msgpack.so\n" >> /www/server/php/74/etc/php.ini

#写入 msgpack.so 扩展调用路径到 php-cli.ini 配置文件
echo -e "\n[msgpack]\nextension = /www/server/php/74/lib/php/extensions/no-debug-non-zts-20190902/msgpack.so\n" >> /www/server/php/74/etc/php-cli.ini

#重新载入 PHP 配置文件
/etc/init.d/php-fpm-74 reload

#清理下载的扩展包和解压的目录
cd ~ && rm -rf ~/msgpack-* ~/msgpack.tgz

安装 object cache pro 插件会用到下面的 phpredis 扩展,宝塔面板中安装的 phpredis 扩展缺少 zstd 、igbinary 、msgpack 这几个库,根据我下面的教程重新编译一下 phpredis 扩展即可。
如果已经安装了宝塔 phpredis 扩展需要先卸载,再根据下面教程重新安装!

安装 object cache pro 插件会用到下面的 relay 扩展,可以替代 phpredis 扩展,根据 relay 官方说法,relay 比 phpredis 快 40 倍!我测试后发现的确是更快那么一丢丢,但并没有那么夸张的 40 倍那么多。
切记,phpredis 和 relay 二选一即可!

给TA打赏
共{{data.count}}人
人已打赏
Linux

ProxmoxVE(PVE) 增加虚拟内存(SWAP)空间容量教程

2021-10-30 4:15:30

Linux

宝塔面板定时自动清理 Session 文件

2023-3-8 16:20:22

18 条回复 A文章作者 M管理员
  1. 看看

  2. 看看

  3. 看看

  4. 谢谢

  5. 站长 relay插件第二步 404

    • 66哥

      relay官方蛋疼的经常修改下载地址,你自己去官网找一下新的下载地址,然后替换我命令中的下载地址即可。

  6. 不错哦

  7. 感谢分享

  8. ttbbaa

    看看怎么实现的

  9. 小白白

    听你的建议我也去实测一下relay试试

  10. 小白白

    大佬,请教一下,测试这些扩展都装好的情况下,只要加入其中代码:
    ‘password’ => ”,
    ‘compression’ => ‘zstd’,
    ‘serializer’ => ‘igbinary’,
    ‘client’ => ‘relay’,

    就会显示 Error establishing a Redis connection

    只要将relay改回phpredis,并且去掉:
    ‘compression’ => ‘zstd’,
    ‘serializer’ => ‘igbinary’,

    就变回正常使用,这会是什么问题造成的呢?

    • 66哥

      我挑重点简单说一下,你需要检查relay是否包含如下三个扩展

      #相关介绍https://relay.so/docs/1.x/installation#manual-installation
      
      /usr/bin/php -m | grep -e json -e igbinary -e msgpack
      # igbinary
      # json
      # msgpack
      

      还需要检查relay需要的压缩算法库是否正常

      #相关介绍https://relay.so/docs/1.x/installation#manual-installation
      
      mkdir /tmp/relay
      curl -sSL "https://builds.r2.relay.so/v0.9.1/relay-v0.9.1-php8.1-debian-x86-64.tar.gz" | tar -xz --strip-components=1 -C /tmp/relay
      ldd /tmp/relay/relay-pkg.so
      # libpthread.so.0 => /lib/aarch64-linux-gnu/libpthread.so.0 (0x0000ffff9676d000)
      # libssl.so.1.1 => /lib/aarch64-linux-gnu/libssl.so.1.1 (0x0000ffff966d3000)
      # libcrypto.so.1.1 => /lib/aarch64-linux-gnu/libcrypto.so.1.1 (0x0000ffff96445000)
      # libzstd.so.1 => not found (例如此处提示未找到libzstd压缩算法库)
      # liblz4.so.1 => /lib/aarch64-linux-gnu/liblz4.so.1 (0x0000ffff96203000)
      

      还需要检查并修改我教程中给出的PHP版本路径

      [msgpack]
      extension = /www/server/php/81/lib/php/extensions/no-debug-non-zts-20210902/msgpack.so
      [igbinary]
      extension = /www/server/php/81/lib/php/extensions/no-debug-non-zts-20210902/igbinary.so
      [relay]
      extension = /www/server/php/81/lib/php/extensions/no-debug-non-zts-20210902/relay.so
      [relay config]
      relay.maxmemory = 512M
      relay.eviction_policy = noeviction
      relay.environment = production
      relay.key = 1L0O-KF0R-W4RDT0-Y0URR3P-0RTMRBR-OCC0L1
      

      如果这些都没问题,你就可以修改添加下面代码到wp-config.php

      #Redis Object Cache插件
      #相关介绍https://github.com/rhubarbgroup/redis-cache/#configuration
      
      define( 'WP_REDIS_CLIENT', 'relay' );
      
      define( 'WP_REDIS_HOST', '127.0.0.1' );
      define( 'WP_REDIS_PORT', 6379 );
      
      // when using Relay, each WordPress installation
      // MUST a dedicated Redis database and unique prefix
      define( 'WP_REDIS_DATABASE', 0 );
      define( 'WP_REDIS_PREFIX', 'db0:' );
      
      // consume less memory
      define( 'WP_REDIS_IGBINARY', true );
      

      最后,这玩意其实没啥太大必要折腾,我实测免费relay用户提升不大。付费用户价格不便宜,我没机会测试。
      还有redis那个WP插件,直接用免费版本就行,pro版本对WC商城插件支持的更好,如果你的网站没装WC感觉用免费redis插件以及普通phpredis扩展足以。
      网站尽量少折腾,即便是折腾完略微提升那么一点点速度也意义不大,没有CDN提升大。

    • 小白白

      我用的是付费版,然后装了WC,正在根据你的建议一步一步排查问题。多谢大佬

  11. xiaoz

    看看

  12. terry

    学习学习

  13. 123aa

    学习一下

  14. dancer

    看看隐藏内容

  15. qwqw1

    看看

个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索