记一次给php7.3.6安装rar拓展中的问题
282 字
1 分钟
记一次给php7.3.6安装rar拓展中的问题
下载好rar-4.0.0.tgz,进行解压~~
gunzip rar-4.0.0.tgz得到tar,再解压~~~
tar -xvf rar-4.0.0.tarcd到目录rar-4.0.0.tar里
cd rar-4.0.0/用phpize确认一下已安装php版本
/usr/local/php/bin/phpize输出
Configuring for:PHP Api Version: 20180731Zend Module Api No: 20180731Zend Extension Api No: 320180731然后进行生成编译配置
./configure --with-php-config=/usr/local/php/bin/php-config这里要根据自己的路径。
xiuixuiux刷出一堆代码
最后,make & make install 就行,但是我这里make出错了。
显示:
/tmp/pear/download/rar-4.0.0/rararch.c:1173:18: error: ‘zend_class_entry’ {aka ‘struct _zend_class_entry’} has no member named ‘iterator_funcs’; did you mean ‘iterator_funcs_ptr’? rararch_ce_ptr->iterator_funcs.funcs = &rararch_it_funcs; ^~~~~~~~~~~~~~ iterator_funcs_ptrmake: *** [Makefile:198: rararch.lo] Error 1重点看到
/tmp/pear/download/rar-4.0.0/rararch.c:1173:18: error: ‘zend_class_entry’ {aka ‘struct _zend_class_entry’} has no member named ‘iterator_funcs’; did you mean ‘iterator_funcs_ptr’?让我很纳闷,索性去百度了一通,果然找到了,原来是因为
这是由于新的Zend代码由之前的: zend_class_iterator_funcs iterator_funcs; class_container.iterator_funcs.funcs = NULL; 已经修改成: zend_class_iterator_funcs *iterator_funcs_ptr; class_container.iterator_funcs_ptr = NULL;
那就好办了,直接进配置文件修改一下即可~~
编辑rar-4.0.0/目录下的rararch.c文件
修改第961行 it->parent.funcs = ce->iterator_funcs.funcs;
改为:it->parent.funcs = ce->iterator_funcs_ptr;
修改1173行 rararch_ce_ptr->iterator_funcs.funcs = &rararch_it_funcs;
改为 rararch_ce_ptr->iterator_funcs_ptr = &rararch_it_funcs;
(注意别复制到空格)
修改完保存,重新编译,成功~ ~ ~ ~
文章分享
如果这篇文章对你有帮助,欢迎分享给更多人!
记一次给php7.3.6安装rar拓展中的问题
https://www.sayxw.top/archives/13.html













