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

参考