ソフラボの技術ブログ

仕事で使ったプログラミング、サーバー周りで役に立つこと、Webサービス開発に必要な技術情報、モバイル情報を書いてます。わかりやすく見やすくをモットーにしています。

EC CUBE 4.0.5でPHP Composer 1.xを使ってインストールする

EC CUBEをDockerで構築時にエラーに遭遇したので、その時の対処方法をまとめました。

環境

macOS 10.14
・Docker Desktop 2.5.0.1
・EC CUBE 4.0.5

現象

上記環境でEC CUBE付属ファイルでdocker composeを実行すると次のエラーが発生します。

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

Changed current directory to /root/.composer

                                                                                                        
  [RuntimeException]                                                                                    
  No composer.json present in the current directory, this may be the cause of the following exception.  
                                                                                                        

                                             
  [InvalidArgumentException]                 
  Could not find package hirak/prestissimo.  
                                             
  Did you mean this?                         
      hirak/prestissimo                      
                                             

require [--dev] [--dry-run] [--prefer-source] [--prefer-dist] [--fixed] [--no-suggest] [--no-progress] [--no-update] [--no-install] [--no-scripts] [--update-no-dev] [-w|--update-with-dependencies] [-W|--update-with-all-dependencies] [--with-dependencies] [--with-all-dependencies] [--ignore-platform-req IGNORE-PLATFORM-REQ] [--ignore-platform-reqs] [--prefer-stable] [--prefer-lowest] [--sort-packages] [-o|--optimize-autoloader] [-a|--classmap-authoritative] [--apcu-autoloader] [--apcu-autoloader-prefix APCU-AUTOLOADER-PREFIX] [--] [<packages>]...

ERROR: Service 'ec-cube' failed to build : The command '/bin/sh -c curl -sS https://getcomposer.org/installer   | php   && mv composer.phar /usr/bin/composer   && composer config -g repos.packagist composer https://packagist.jp   && composer global require hirak/prestissimo   && chown www-data:www-data /var/www   && mkdir -p ${APACHE_DOCUMENT_ROOT}/var   && chown -R www-data:www-data ${APACHE_DOCUMENT_ROOT}   && find ${APACHE_DOCUMENT_ROOT} -type d -print0   | xargs -0 chmod g+s   ;' returned a non-zero code: 1

原因

EC CUBE 4.0.5以前は、PHP Composer 2.xに対応していないためです。

対処方法

EC CUBE付属のDockerfileの58行目あたりのphpコマンドにバージョンを指定するオプションを指定し、再度docker composeを実行します。
php -- --1」とすることで、Composer 1系の最新版をインストールするようになります。

Dockerfileの編集

# before
RUN curl -sS https://getcomposer.org/installer \
  | php \
  && mv composer.phar /usr/bin/composer \

# after
RUN curl -sS https://getcomposer.org/installer \
  | php -- --1 \
  && mv composer.phar /usr/bin/composer \

EC-CUBE 4 システム構築入門&店舗運営・管理ビギナーズガイド

EC-CUBE 4 システム構築入門&店舗運営・管理ビギナーズガイド

  • 作者:西村 誠
  • 発売日: 2019/02/27
  • メディア: 単行本(ソフトカバー)