phpspreadsheet導入時にエラーが起きた時の対応
やりたいこと
phpspreadsheetを導入したい
$ composer require phpoffice/phpspreadsheet
前提
- Dockerを使用
- イメージはaplineベースの「php:fpm-alpine3.13」を使用
エラー内容
bash-5.1# composer require phpoffice/phpspreadsheet Using version ^1.18 for phpoffice/phpspreadsheet ./composer.json has been updated Running composer update phpoffice/phpspreadsheet Loading composer repositories with package information Updating dependencies Your requirements could not be resolved to an installable set of packages. Problem 1 - Root composer.json requires phpoffice/phpspreadsheet ^1.18 -> satisfiable by phpoffice/phpspreadsheet[1.18.0]. - phpoffice/phpspreadsheet 1.18.0 requires ext-gd * -> it is missing from your system. Install or enable PHP's gd extension. To enable extensions, verify that they are enabled in your .ini files: - /usr/local/etc/php/php.ini - /usr/local/etc/php/conf.d/docker-php-ext-pdo_mysql.ini - /usr/local/etc/php/conf.d/docker-php-ext-sodium.ini - /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini Laravel Mix v6.0.31 You can also run `php --ini` inside terminal to see which files are used by PHP in CLI mode
原因
どうやらgdが入っていないっぽい。
phpoffice/phpspreadsheet 1.18.0 requires ext-gd * -> it is missing from your system. Install or enable PHP's gd extension.
解決策
結果的にgdとzipがなくてエラーになるのでその2つをインストールする(Dockerfileに追記する)
# install gd RUN apk add --no-cache libpng libpng-dev && docker-php-ext-install gd && apk del libpng-dev # install zip extension RUN apk add --no-cache libzip-dev zip && docker-php-ext-install zip