35
43

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

【2020年度版】EC-CUBE の開発環境の作り方

Last updated at Posted at 2020-05-11

ビルトインウェブサーバーで簡単環境構築 や、 EC-CUBE の開発環境の作り方の2020年度版です。

最近、 symfony/cli が超絶使えるようになっているのでご紹介したいと思います。

  • 一部制約がありますが、 WordPress や Symfony を使用していない EC-CUBE2系でも利用可能です
  • Symfony3系、4系では Symfony/WebServer-bundle で開発用ローカルウェブサーバーを起動していましたが、 Symfony5系では廃止されました

symfony/cli とは

  • Symfonyプロジェクトを新しく作成したり
  • パワフルな開発用ローカルウェブサーバーが利用できたり
  • セキュリティチェックができたり

する便利なコマンドラインツールです。
ここでは開発用ローカルウェブサーバーの利用方法を中心に紹介したいと思います。

インストール方法

2023年1月21日追記
最近、 Symfony cli のインストール方法が変わりましたので、こちらを参考にインストールしてください。
https://symfony.com/download

Mac

curl -sS https://get.symfony.com/cli/installer | bash

## $HOME/.symfony/bin に PATH を通しておきます
export PATH=$HOME/.symfony/bin:$PATH

Windows

後日もうちょっと詳細にまとめます

  1. こちらから setup.exe をダウンロードし、インストールしてください
  2. (Git がインストールされていない場合) インストールの最後に、 Git for Windows のダウンロードページが表示されます。 Click here to download manually のリンクをクリックし、 Git for Windows をダウンロードし、インストールしてください
  3. (PHP がインストールされていない場合) Web Platform Installer をインストールし、(PHP7.3.x(x64)) をインストールします

TODO: PHPのインストールは chocolatey の方が簡単かも

Linux

wget https://get.symfony.com/cli/installer -O - | bash

## $HOME/.symfony/bin に PATH を通しておきます
export PATH=$HOME/.symfony/bin:$PATH

EC-CUBE(4.0系)のインストール方法

symfony コマンドをインストールしたら、以下3つのコマンドを実行することでEC-CUBEをインストールできます。

symfony composer selfupdate --1 ## EC-CUBE4.1以降は不要です
symfony composer install
symfony console eccube:install -n

開発用ローカルウェブサーバーの利用方法

以下のコマンドを実行することで http://127.0.0.1:8000 で開発用ローカルウェブサーバーが起動します。

symfony server:start

インストールされている PHP を自動的に検索してくれますので、特別な設定不要です。
また、 php-fpm がインストールされていれば、 php-fpm 経由で起動します

停止したい場合は CTRL+C で停止します。

SSL を利用したい場合

以下のコマンドでオレオレSSL証明書を自動設定できます。

symfony server:ca:install

開発用ローカルウェブサーバーの URL も https://127.0.0.1:8000 になります。
WSL2 を使用している場合は https://localhost:8000 へアクセスしてください。

インストールされているPHPの表示

symfony local:php:list コマンドで、インストールされている PHP を一覧表示できます

symfony local:php:list

コマンドを実行すると、以下のようなテーブルが表示されます

Version Directory PHP CLI PHP FPM PHP CGI Server System?
5.3.29 /opt/local bin/php53 PHP CLI
5.4.45 /Users/nanasess/.phpbrew/php/php-5.4.45 bin/php sbin/php-fpm bin/php-cgi PHP FPM
5.6.40 /Users/nanasess/.phpbrew/php/php-5.6.40 bin/php sbin/php-fpm bin/php-cgi PHP FPM
7.0.33 /Users/nanasess/.phpbrew/php/php-7.0.33 bin/php sbin/php-fpm bin/php-cgi PHP FPM
7.1.33 /Users/nanasess/.phpbrew/php/php-7.1.33 bin/php sbin/php-fpm bin/php-cgi PHP FPM
7.2.30 /Users/nanasess/.phpbrew/php/php-7.2.30 bin/php sbin/php-fpm bin/php-cgi PHP FPM
7.3.11 /usr bin/php sbin/php-fpm PHP FPM
7.3.17 /Users/nanasess/.phpbrew/php/php-7.3.17 bin/php sbin/php-fpm bin/php-cgi PHP FPM
7.4.3 /usr/local bin/php Cellar/php/7.4.3/sbin/php-fpm Cellar/php/7.4.3/bin/php-cgi PHP FPM *
7.4.5 /Users/nanasess/.phpbrew/php/php-7.4.5 bin/php sbin/php-fpm bin/php-cgi PHP FPM

僕みたいな、 PHPをたくさん入れている人は上記のようにたくさん表示されます。
とても便利な機能ですね!
試した限りでは、 cli 版のPHP5.4でも動作しました。

指定したPHPバージョンで開発用ローカルウェブサーバーを起動する

基本的に、 PATH の通った PHP で開発用ローカルウェブサーバーは起動します。
PHP7.2を利用したいプロジェクトでは、以下のように .php-version ファイルを作成します。

cd my-project
echo "7.2" > .php-version

DocumentRoot を指定する

EC-CUBE2系、EC-CUBE3系のように、 html ディレクトリをドキュメントルートにしたい場合は --document-root オプションを使用します

symfony server:start --document-root=html

EC-CUBE2系や WordPress で使用する

この開発用ローカルウェブサーバーは、 DirectoryIndex を設定することができません

少々不便ですが 下層の DirectoryIndexにアクセスする場合は、以下の例のように index.php 付与してアクセスしましょう

  • https://wordpress.example.com/wp-admin/https://wordpress.example.com/wp-admin/index.php

EC-CUBE2系は html/define.phpdefine('USE_FILENAME_DIR_INDEX', true); を設定することで対応可能です。

注意点

symfony server:ca:install で SSL(TLS)を有効にした場合の注意点

$_SERVER['HTTPS']On となります (Apache などは小文字の on)。一部のアプリケーションやフレームワークでは誤作動の可能性がありますので注意してください

開発用ローカルウェブサーバーからメールを送信しようとすると、 Invalid ID given エラーになる場合

開発用ローカルウェブサーバーからメールを送信しようとすると、 Message ID が 乱数@127.0.0.1:8000 となり、 Invalid ID given というエラーになってしまう場合があります。
これは、 $_SERVER['SERVER_NAME']127.0.0.1:8000 に設定されるためです。
以下のようなコードを path/to/ec-cube/index.php に入れておくことで回避できます。

path/to/ec-cube/index.php
// require $autoload; の下あたり

if (isset($_SERVER['SERVER_SOFTWARE']) && strpos($_SERVER['SERVER_SOFTWARE'], 'Symfony') !== false) {
    $_SERVER['SERVER_NAME'] = '127.0.0.1';
}

まとめ

Symfony と Docker は相性が強烈に悪く、設定も煩雑で難解です。
symfony/cli でしたら、簡単なコマンドで SSL のテスト環境まで構築できてしまいます。ローカル開発環境構築に挫折したり苦しんでいる方には、ぜひおすすめします。

35
43
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
35
43

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?