找不到“ZipArchive”类

时间:2018-05-09 03:05:43

标签: php linux rhel phpspreadsheet

我想要实现的目标

我将在PHP Web应用程序开发中使用PhpSpreadsheet, 我正在尝试配置在服务器上启用PhpSpreadsheet所需的PHP Zip扩展。 我尝试了两种方法,但我不能很好地设置它,所以我希望你告诉我解决方案和其他要检查的方法。

我试过的第一种方法

在终端

执行以下操作
# yum install php71-php-pecl-zip.x86_64
# cp /etc/opt/remi/php71/php.d/40-zip.ini /etc/php.d/40-zip.ini
# systemctl stop httpd.service
# systemctl start httpd.service

从Web浏览器使用PhpSpreadsheet执行处理时,发生错误

/vendor/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Reader/Xlsx.php: 71
Class 'ZipArchive' not found

我确认终端已启用Zip扩展,但我不知道原因。

# php --info
Additional. Ini files parsed =>
·
·
/etc/php.d/40-zip.ini
·
·
zip

Zip => enabled
Zip version => 1.15.2
Libzip headers version => 1.3.2
Libzip library version => 1.5.1

zlib

ZLib Support => enabled
Stream Wrapper => compress.zlib: / /
Stream Filter => zlib.inflate, zlib.deflate
Compiled Version => 1.2.7
Linked Version => 1.2.7

Directive => Local Value => Master Value
zlib.output_compression => Off => Off
zlib.output_compression_level => -1 => -1
zlib.output_handler => no value => no value

# php vendor / phpoffice / phpspreadsheet / samples / index.php
Requirement check:
PHP 5.6.0 ... passed
PHP extension XML ... passed
PHP extension xmlwriter ... passed
PHP extension mbstring ... passed
PHP extension ZipArchive ... passed
PHP extension GD (optional) ... passed
PHP extension dom (optional) ... passed

我试过的第二种方法

取消1st的设置后(卸载包,删除复制的文件) 在终端

执行以下操作
# yum install php71-php-devel.x86_64
# yum install zlib-devel.x86_64
# pecl install zip

第三个命令中出现以下错误

# pecl install zip
No releases available for package "pecl.php.net/zip"
install failed

由于上述错误,下载文件并执行phpize将不会再次出现错误...

# wget http://pecl.php.net/get/zip-1.15.2.tgz
# phpize
Can not find PHP headers in /usr/include/php
The php-devel package is required for use of this command.

我不明白为什么pecl install zipphpize发生了错误。

附加信息(FW /工具版本等)

操作系统:红帽企业Linux服务器版本7.4(Maipo)

PHP:7.1.14

3 个答案:

答案 0 :(得分:0)

要使ZipArchive类存在,PHP需要安装zip extension

有关安装说明(Linux和Windows),请参阅this page

答案 1 :(得分:0)

首先,运行此命令

sudo yum install php-zip

更改php.ini文件后

extension=zip.so

现在运行此命令。

sudo service httpd restart
sudo service php-fpm restart

它在Amazon服务器上的cent os中为我工作。

答案 2 :(得分:0)

CentOS 8的解决方案:

yum install php74-libzip.x86_64
yum install php-pecl-zip