LoginSignup
1
0

PHP extension ext-gdが含まれていない場合の対応

Posted at

概要

とある業務でEC-CUBE2系を使うことがあり、
自身のマシンに開発環境を構築しようとしてみたところPHP拡張モジュールがないことでエラーとなってしまったので、
対応した時の内容について記載する。

環境構築

以下のGitHubを参考にして構築
https://github.com/honjou/docker-eccube2

Composer is not installedと表示

docker-compose up -dまで行い、localhostにアクセスしたところ、
Composer is not installedと表示されたので、
コンテナにアクセスしてcomposerをインストールさせてみる。

# コンテナ名確認(ここではlaravel_appを使う)
[xxx@MacBook-xxx docker-eccube2 (main %=)]$ docker-compose ps
            Name                          Command               State                 Ports              
---------------------------------------------------------------------------------------------------------
docker-eccube2_mailcatcher_1   mailcatcher --no-quit --fo ...   Up      1025/tcp, 0.0.0.0:1080->1080/tcp 
eccube2_db                     docker-entrypoint.sh mysql ...   Up      0.0.0.0:3306->3306/tcp, 33060/tcp
laravel_app                    docker-php-entrypoint apac ...   Up      0.0.0.0:80->80/tcp               
phpmyadmin                     /docker-entrypoint.sh apac ...   Up      0.0.0.0:8080->80/tcp             

# コンテナ内にアクセス
[xxx@MacBook-xxx docker-eccube2 (main %=)]$ docker exec -it laravel_app /bin/bash
root@7cd72c0ea344:/var/www/html# 

# composerをダウンロード
root@7cd72c0ea344:/var/www/html# curl -sS https://getcomposer.org/installer | php
All settings correct for using Composer
Downloading...

Composer (version 2.6.2) successfully installed to: /var/www/html/composer.phar
Use it: php composer.phar

# composerを移動
root@7cd72c0ea344:/var/www/html# mv composer.phar /usr/local/bin/composer

# composer.jsonがあるディレクトリに移動
root@7cd72c0ea344:/var/www/html# cd eccube2/

# install
root@7cd72c0ea344:/var/www/html/eccube2# composer install
Installing dependencies from lock file (including require-dev)
Verifying lock file contents can be installed on current platform.
Your lock file does not contain a compatible set of packages. Please run composer update.

  Problem 1
    - Root composer.json requires PHP extension ext-gd * but 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
You can also run `php --ini` in a terminal to see which files are used by PHP in CLI mode.
Alternatively, you can run Composer with `--ignore-platform-req=ext-gd` to temporarily ignore these required extensions.

Root composer.json requires PHP extension ext-gd * but it is missing from your system. Install or enable PHP's gd extension.
とエラーとなったので、gdの確認をする。

gdが入っていない

php -mでgdが読み込めているか確認したところ、読み込めていなかった。

root@7cd72c0ea344:/var/www/html# php -m | grep gd
{何も表示されない}

表示されていないので入っていないことを確認したので、一度コンテナを抜けて終了させる。

root@7cd72c0ea344:/var/www/html/eccube2# exit
exit
[xxx@MacBook-xxx docker-eccube2 (main %=)]$ docker-compose down
Stopping phpmyadmin                   ... done
Stopping laravel_app                  ... done
Stopping eccube2_db                   ... done
Stopping docker-eccube2_mailcatcher_1 ... done
Removing phpmyadmin                   ... done
Removing laravel_app                  ... done
Removing eccube2_db                   ... done
Removing docker-eccube2_mailcatcher_1 ... done
Removing network docker-eccube2_default

Dockerfileにgdを含める

以下の記事を参考にDockerfileを修正
https://tt-computing.com/docker-php-gd

:
:
&& docker-php-ext-install pdo_mysql mysqli gd

docker-php-ext-installコマンドにgdを追加する。

再buildとup

ここからは上で最初に行った対応を実施。

[xxx@MacBook-xxx docker-eccube2 (main %=)]$ docker-compose build
:
(省略)
:
[xxx@MacBook-xxx docker-eccube2 (main %=)]$ docker-compose up -d
Creating network "docker-eccube2_default" with the default driver
Creating docker-eccube2_mailcatcher_1 ... done
Creating eccube2_db                   ... done
Creating laravel_app                  ... done
Creating phpmyadmin                   ... done

コンテナにアクセスしてgdの確認

[xxx@MacBook-xxx docker-eccube2 (main *%=)]$ docker exec -it laravel_app /bin/bash

# gdが入っているのを確認
root@77e347ed4520:/var/www/html# php -m | grep gd
gd

composer再インストール

# composerをダウンロード
root@77e347ed4520:/var/www/html# curl -sS https://getcomposer.org/installer | php
All settings correct for using Composer
Downloading...

Composer (version 2.6.2) successfully installed to: /var/www/html/composer.phar
Use it: php composer.phar

# composerを移動
root@77e347ed4520:/var/www/html# mv composer.phar /usr/local/bin/composer

# install
root@77e347ed4520:/var/www/html# cd eccube2/
root@77e347ed4520:/var/www/html/eccube2# composer install
Installing dependencies from lock file (including require-dev)
Verifying lock file contents can be installed on current platform.
Package operations: 40 installs, 0 updates, 0 removals
  - Downloading fzaninotto/faker (v1.9.2)
  - Downloading react/promise (v2.8.0)
:
(省略)
:
Generating optimized autoload files
:
(省略)
:
Class MDB2_PEARProxy located in ./data/vendor/silverorange/mdb2/MDB2/Wrapper/peardb.php does not comply with psr-0 autoloading standard. Skipping.
3 packages you are using are looking for funding.
Use the `composer fund` command to find out more!

localhostにアクセスしてEC-CUBEインストール画面が表示されたらOK

スクリーンショット 2023-09-10 6.30.39.png

ここから先は参考にしている記事を元に起動まで実施できた。

1
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
1
0