0
0

WSL2 Docker Laravel環境でPhpSpreadsheetを使うまでのメモ

Last updated at Posted at 2024-04-18

はじめに

WEBエンジニア2年目の初心者です。
仕事でlaravel内でPhpSpreadsheetを使うためにインストールしようとしたらエラーが出てインストールできない・・・
Dockerも使った経験が浅いので、いろいろ調べたため、自分用のメモ兼困っている人の手助けになれば幸いです。

1.Phpspreadsheetのインストールを試みる

以下のコマンドを打ってみると見事にエラーが出てさっそく困った

composer require phpoffice/phpspreadsheet

↓エラー内容

  Package phpoffice/phpspreadsheet has requirements incompatible with your PHP version, PHP extensions and Composer version:  
    - phpoffice/phpspreadsheet 2.0.0 requires ext-gd * but it is not present.                                                 
    - phpoffice/phpspreadsheet 2.0.0 requires ext-mbstring * but it is not present.                                           
    - phpoffice/phpspreadsheet 2.0.0 requires ext-zip * but it is not present.          

どうやらphp のext-gd ext-mbstring ext-zipの3つが足りないからインストールできないって言われている模様・・・
docker環境で入れる方法をGoogle先生に聞いてみると、以下の記載をdockerファイルに書き込むと動くらしい
参考記事

2.Dockerファイルを修正

とりあえず、Dockerファイルに書き込んでみる
以下PHPのDockerファイル

FROM php:8.1-fpm-alpine

# install composer
RUN curl -sS https://getcomposer.org/installer | php
RUN mv composer.phar /usr/local/bin/composer

# install packages
RUN apk update
RUN apk add git nodejs npm

# install php extensions
RUN docker-php-ext-install pdo pdo_mysql
RUN apt-get update -y && apt-get install -y libpng-dev

よし、docker-compose up -d --buildでビルドしてみるか!



はい、エラーが出ました。

/bin/sh: apt-get: not found

apt-getなんてコマンドは存在しないらしいです。
stackoverflowに同じ問題抱えた人が質問してました。
どうやら、alpineベースのイメージだからubuntuのapt-getコマンドは使えないと
apt-get -> apk add
に変えると動くよとのこと
ついでに調べていくと、dockerファイルって1つのRUNで実行したい場合は\&&でつなげられるようです。
最終的に変更したdockerファイルはこれ!

FROM php:8.1-fpm-alpine

# install composer
RUN curl -sS https://getcomposer.org/installer | php
RUN mv composer.phar /usr/local/bin/composer

# install packages
RUN apk update \
    && apk add git nodejs npm\
    #libpng-devとlibzip-devをイメージファイルに追加
    libpng-dev\
    libzip-dev \
    && docker-php-ext-install pdo pdo_mysql\
    #gdとzipのライブラリをphpに追加
    gd \
    zip

これでビルドすれば無事にPhpSpreadsheetをインストールしてLaravelで使えるようになりましたとさ
alpineベース・wsl2・ubuntuのあたりは今度調べることとしよう・・・

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0