# Exception: Class 'ZipArchive' not found
Exception: Class 'ZipArchive' not found
PHPExcel 使ってエクセル操作している時に ZipArchive class がないと怒られましたので、PHPExcel と ZipArchive について調べました。
環境
- CentOS 7
- PHP 7.4
- PHPExcel 1.8
OS バージョン確認
cat /etc/redhat-release
# CentOS Linux release 7.9.2009 (Core)
ソース
$excel = PHPExcel_IOFactory::createReader('Excel2007');
$file = $excel->load($filepath);
PHP バージョン確認
php -v
# PHP 7.4.23 (cli) (built: Aug 24 2021 16:33:30) ( NTS )
# Copyright (c) The PHP Group
# Zend Engine v3.4.0, Copyright (c) Zend Technologies
# 原因 & 解決
ZipArchive class 使うには PHP は zip モジュールが必要で、なければエラーになります。
php 7.4 の zip モジュールインストール
yum -y install php74-pecl-zip
モジュール確認
php -m
# [PHP Modules]
# bz2
# calendar
# Core
# ctype
# curl
# date
# dom
# exif
# fileinfo
# filter
# ftp
# gd
# gettext
# hash
# iconv
# json
# libxml
# mbstring
# mcrypt
# mysqli
# mysqlnd
# openssl
# pcntl
# pcre
# PDO
# pdo_mysql
# pdo_sqlite
# Phar
# readline
# Reflection
# session
# SimpleXML
# sockets
# sodium
# SPL
# sqlite3
# standard
# tokenizer
# xml
# xmlreader
# xmlwriter
# xsl
# zip
# zlib
プログラム再実行してみたら、問題解決!
# docker-php-ext-install zip
docker-php-ext-install で zip モジュールインストール
RUN apt-get update \
&& apt-get install -y zlib1g-dev libpq-dev unzip libzip-dev imagemagick libmagickwand-dev
RUN docker-php-ext-install pdo_mysql mysqli zip \
&& pecl install imagick \
&& docker-php-ext-enable imagick
PHPExcel 非推奨
PHPExcel (opens new window) は 2015 年にバージョン 1.8.1 最後のリリースで更新停止しました。2019 年サポート終了のため、非推奨となり、PHPExcel の後継であるPhpSpreadsheet (opens new window)を導入することを推奨されます。