美文网首页
php zip拓展安装

php zip拓展安装

作者: HBLong | 来源:发表于2017-05-21 21:17 被阅读691次

    在项目中使用PHPExcel时发现在调用save函数的时候报错

    Message : Class 'ZipArchive' not found
    Trace : /PHPExcel/Writer/Excel2007.php
    

    经过一番查询之后发现是PHP没有安装zip拓展,于是乎前往下载编译源码资源libzip依赖zip拓展。在这里我用的是libzip-1.2.0和zip-1.14.0的。
    接下来就是编译依赖

    [root@rhel6 ~]# tar zxvf libzip-1.2.0.tar.gz
    [root@rhel6 ~]# cd libzip-1.2.0
    [root@rhel6 ~]# ./configure
    [root@rhel6 ~]# make & make install
    

    安装完成之后编译php拓展

    [root@rhel6 ~]# tar zxvf zip-1.14.0.tgz
    [root@rhel6 ~]# cd zip-1.14.0/
    [root@rhel6 ~]# phpize
    [root@rhel6 ~]# make & make install
    

    在执行make命令的时候,报错了

    在包含自 /root/zip-1.14.0/php7/php_zip.h:31 的文件中,
                     从 /root/zip-1.14.0/php7/php_zip.c:31:
    /usr/local/include/zip.h:59:21: 错误:zipconf.h:没有那个文件或目录
    In file included from /root/zip-1.14.0/php7/php_zip.h:31,
                     from /root/zip-1.14.0/php7/php_zip.c:31:
    /usr/local/include/zip.h:258: 错误:expected specifier-qualifier-list before ‘zip_int64_t’
    In file included from /root/zip-1.14.0/php7/php_zip.h:31,
                     from /root/zip-1.14.0/php7/php_zip.c:31:
    /usr/local/include/zip.h:285: 错误:expected specifier-qualifier-list before ‘zip_uint64_t’
    /usr/local/include/zip.h:307: 错误:expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘zip_flags_t’
    /usr/local/include/zip.h:309: 错误:expected declaration specifiers or ‘...’ before ‘*’ token
    /usr/local/include/zip.h:309: 错误:expected declaration specifiers or ‘...’ before ‘zip_uint64_t’
    /usr/local/include/zip.h:309: 错误:‘zip_int64_t’声明为返回一个函数的函数
    /usr/local/include/zip.h:390: 附注:需要类型‘int (*)()’,但实参的类型为‘long int’
    /root/zip-1.14.0/php7/php_zip.c:299: 错误:提供给函数‘zip_source_file’的实参太多
    /root/zip-1.14.0/php7/php_zip.c:303: 错误:提供给函数‘zip_file_add’的实参太多
    /root/zip-1.14.0/php7/php_zip.c: 在函数‘php_zipobj_get_zip_comment’中:
    /root/zip-1.14.0/php7/php_zip.c:469: 错误:提供给函数‘zip_get_archive_comment’的实参太多
    /root/zip-1.14.0/php7/php_zip.c: 在函数‘php_zipobj_get_zip_comment’中:
    /root/zip-1.14.0/php7/php_zip.c:469: 错误:提供给函数‘zip_get_archive_comment’的实参太多
    /root/zip-1.14.0/php7/php_zip.c:1345: 错误:‘struct zip_stat’没有名为‘name’的成员
    /root/zip-1.14.0/php7/php_zip.c:1348: 错误:‘struct zip_stat’没有名为‘comp_size’的成员
    /root/zip-1.14.0/php7/php_zip.c:1351: 错误:‘struct zip_stat’没有名为‘size’的成员
    /root/zip-1.14.0/php7/php_zip.c:1354: 错误:‘struct zip_stat’没有名为‘comp_method’的成员
    /root/zip-1.14.0/php7/php_zip.c:1385: 错误:‘struct zip_stat’没有名为‘comp_method’的成员
    
    

    定位错误zipconf.h:没有那个文件或目录,看来是找不到配置文件了,于是乎手动转移zipconf.h

    [root@rhel6 ~]# cp /usr/local/lib/libzip/include/zipconf.h /usr/local/include/zipconf.h
    [root@rhel6 ~]# make & make install
    ...
    ...
    Installing shared extensions:     /usr/local/php/lib/php/extensions/no-debug-non-zts/
    

    编译成功,接下来在php目录下的etc/php.ini配置文件追加extension=zip.so
    然后重启nginx,重新载入php配置文件

    [root@rhel6 ~]# service nginx restart
    [root@rhel6 ~]# /etc/init.d/php-fpm reload
    

    运行PHPExcel Demo成功,安装zip拓展成功。

    相关文章

      网友评论

          本文标题:php zip拓展安装

          本文链接:https://www.haomeiwen.com/subject/kisvxxtx.html