新版安装pecl_redis失败,redis无法启用
cc -I. -I/tmp/redis-6.1.0 -I/tmp/redis-6.1.0/include -I/tmp/redis-6.1.0/main -I/tmp/redis-6.1.0 -I/usr/local/php-generic-8.2/include/php -I/usr/local/php-generic-8.2/include/php/main -I/usr/local/ph
p-generic-8.2/include/php/TSRM -I/usr/local/php-generic-8.2/include/php/Zend -I/usr/local/php-generic-8.2/include/php/ext -I/usr/local/php-generic-8.2/include/php/ext/date/lib -I/usr/local/php-generi
c-8.2/include/php/ext -DHAVE_CONFIG_H -g -O2 -D_GNU_SOURCE -DZEND_COMPILE_DL_EXT=1 -c /tmp/redis-6.1.0/redis.c -MMD -MF redis.dep -MT redis.lo -fPIC -DPIC -o .libs/redis.o
/tmp/redis-6.1.0/redis.c: In function 'zim_Redis_multi':
/tmp/redis-6.1.0/redis.c:1909:58: error: macro "strncmp" requires 3 arguments, but only 2 given
} else if (strncmp(resp, ZEND_STRL("+OK")) != 0) {
^
/tmp/redis-6.1.0/redis.c: In function 'redis_response_enqueued':
/tmp/redis-6.1.0/redis.c:2048:47: error: macro "strncmp" requires 3 arguments, but only 2 given
if (strncmp(resp, ZEND_STRL("+QUEUED")) == 0) {
^
/tmp/redis-6.1.0/redis.c: In function 'redis_sock_read_multibulk_multi_reply_loop':
/tmp/redis-6.1.0/redis.c:2072:44: error: macro "strncmp" requires 3 arguments, but only 2 given
strncmp(inbuf, ZEND_STRL("+OK")) != 0)
^
make: * [redis.lo] Error 1
mv: cannot stat '/usr/local/php-generic-8.2/lib/php/extensions/no-debug-non-zts-20220829/redis.so': No such file or directory
lnmp-4.0 环境DeepSeek安装扩展(pecl_redis),卸载扩展(no)失败。
扩展pecl_redis安装失败
编译错误源于 strncmp
参数数量不匹配(PHP 8.2 源码宏定义调整导致兼容性问题)。从错误日志看,ZEND_STRL
宏在 PHP 8.2 中展开后可能与旧版 pecl_redis
源码存在兼容性问题。
确保 hiredis
和开发工具已安装:
yum install -y hiredis-devel
# 或 Debian/Ubuntu
apt install -y libhiredis-dev
PHP 8.2 需要 pecl_redis
>= 6.0.0,直接指定版本安装:
pecl install redis-6.0.0
若安装失败,手动下载源码并修复 strncmp
参数:
wget https://pecl.php.net/get/redis-6.0.0.tgz
tar zxvf redis-6.0.0.tgz
cd redis-6.0.0
修改以下文件中的代码:
文件:redis.c
strncmp(resp, ZEND_STRL("+OK"))
的代码strncmp(resp, "+OK", 3)
(手动添加第三个参数)phpize
./configure
make && make install
在 php.ini
中添加:
extension=redis.so
重启 PHP 服务:
lnmp php-fpm restart
php -m | grep redis
# 应输出 "redis"
mv: cannot stat '.../redis.so'
:检查编译生成的 .so
文件路径,确认 make install
输出路径与 PHP 扩展目录一致。LNMP 环境特殊配置:某些 LNMP 一键包可能隐藏 PHP 路径,使用绝对路径调用 phpize
:
/usr/local/php-generic-8.2/bin/phpize
docker环境中使用pecl安装任何扩展都报错 内容:Fatal error: Uncaught Error: Call to undefined function _parseFeaturesHeaderFile() in /usr/local/lib/php/OS/Guess.php:248 求解!!!!! dockerFile:
本文向大家介绍CentOS7编译安装新版LNMP环境,包括了CentOS7编译安装新版LNMP环境的使用技巧和注意事项,需要的朋友参考一下 由于公司要求需要最新版的ZABBIX2.4.4需要最新版的系统CENTOS7和新版的LNMP环境,所以本人摸索着使用新版的环境搭建了LNMP系统,环境版本如下: 系统:CentOS 7 x86_64 NGINX:nginx-1.7.12 数据库:mariadb
主要内容:安装eAccelerator,安装xCache,安装memcached,安装imageMagick,安装ionCube我们已经知道 LNMP 一键安装包默认只安装了最基本的 Nginx+ MySQL+ PHP 环境,并没有安装扩展功能模块,如果需要安装扩展模块该怎么办? 不用担心,也有相应的安装脚本,我们一个一个来看。需要注意的是,以下 5 个模块并不是必须安装的,而是用到哪个模块才安装哪个模块。 安装eAccelerator eAccelerator 是一个开放源码的 PHP 加速器
本文向大家介绍Windows下编译安装php扩展eAccelerator教程,包括了Windows下编译安装php扩展eAccelerator教程的使用技巧和注意事项,需要的朋友参考一下 eAccelerator是一个开源PHP加速器,用于优化程序,编码器和动态内容缓存。它通过在编译状态下对PHP脚本进行缓存以提高他们的性能,所以那些系统开销在编译时几乎可以被消除。它还能够对脚本进行优化以便加速它
============================================================= [Linux] AMH 7.1 https://amh.sh [lnmp-3.6 admin] [OK] lnmp-3.6 is already installed. pecl_imagick-3.7 [Linux] AMH 7.1 https://amh.sh [pecl_
php环境缺少很多默认的扩展 遇到很多坑了 比如 bcmath filename扩展 这些应该默认就安装的 比如 bcmath filename扩展 还有Call to undefined function imagecreatefromwebp()这个问题没解决呢
本文向大家介绍Centos7下编译安装配置Nginx+PHP+MySql环境,包括了Centos7下编译安装配置Nginx+PHP+MySql环境的使用技巧和注意事项,需要的朋友参考一下 序言 这次玩次狠得。除了编译器使用yum安装,其他全部手动编译。哼~ 看似就Nginx、PHP、MySql三个东东,但是它们太尼玛依赖别人了。 没办法,想用它们就得老老实实给它们提供想要的东西。 首先的一些模块依
本文向大家介绍PHP编译安装时常见错误解决办法,包括了PHP编译安装时常见错误解决办法的使用技巧和注意事项,需要的朋友参考一下 This article is post on https://coderwall.com/p/ggmpfa configure: error: xslt-config not found. Please reinstall the libxslt >= 1.1.0 di