概要
とある業務で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
ここから先は参考にしている記事を元に起動まで実施できた。