mojaviにしたMacにphpenvを使ってeccube4を入れるまで


#ECCubge4インストール
ECCube4が公開されたので、
mojaviにしたmacに、phpenvを使って、ECCube4の導入を目指します。

## 関連するものを全部入れます。
zlibとか、readlineとかlibeditとか、諸々入れておきます。

``` bash
xcode-select --install
brew install re2c
```


### zlib 
https://www.zlib.net/
なんだか動いてくれないので自分で取ってきました。

``` bash
wget https://www.zlib.net/zlib-1.2.11.tar.gz
tar xzvf zlib-1.2.11.tar.gz
cd zlib-1.2.11/
./configure
make && make install
cd ../
rm -rf  zlib-1.2.11
```





### PHPenvPHP-build
https://github.com/phpenv/phpenv
https://github.com/php-build/php-build

``` shell
git clone git://github.com/phpenv/phpenv.git ~/.phpenv
echo 'export PATH="$HOME/.phpenv/bin:$PATH"' >> ~/.bash_profile
echo 'eval "$(phpenv init -)"' >> ~/.bash_profile
exec $SHELL -l
git clone https://github.com/php-build/php-build $(phpenv root)/plugins/php-build
```

---
`ここでinstallできそうですが、できません。`

試してみるとエラーになるので
ほとんどはZ~~~やc~~~がないったものなので、
すんなり　通る人も中にはいるかもしれません。

``` bash
phpenv install 7.1.9
```


このエラーを解消していくためにやったことを以下に記載していきます。

## 重要だったこと。
ほとんどがphpenvがらみの問題でした。

- コンフィグを設定する必要がありました。
 
```
vim .phpenv/plugins/php-build/share/php-build/default_configure_options
```
- 必要なヘッダファイルを指定する必要がありました。

``` bash
　--with-curl=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/
　--with-tidy=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/
　--with-libedit=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/
--with-iconv=/usr/local/opt/libiconv
```

- --with-bz2を削除する必要がありました。


####### 完成したdefault_configure_optionは以下のようになります。

```
--without-pear
--with-gd
--enable-sockets
--with-jpeg-dir=/usr
--with-png-dir=/usr
--enable-exif
--enable-zip
--with-zlib
--with-zlib-dir=/usr
--enable-intl
--with-kerberos
--with-openssl
--with-mcrypt=/usr
--enable-soap
--enable-xmlreader
--with-xsl
--enable-ftp
--enable-cgi
--with-xmlrpc
--enable-sysvsem
--enable-sysvshm
--enable-shmop
--with-mysqli=mysqlnd
--with-pdo-mysql=mysqlnd
--with-pdo-sqlite
--enable-pcntl
--enable-mbstring
--disable-debug
--enable-fpm
--enable-bcmath
--enable-phpdbg
--with-curl=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/
--with-tidy=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/
--with-libedit=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/
--with-iconv=/usr/local/opt/libiconv
```


- php-buildを変更する必要がありました

```
vim ~/.phpenv/plugins/php-build/bin/php-build￼
```
コメントアウトする場所は１箇所のみで、だいたい580行あたりにあります。
php-buildがwith-libeditは上書きするので更新しておきます。

``` bash
  578     if is_osx; then
  579         configure_option -D "--with-gettext"
  580         configure_option -D "--with-readline"
  581         #configure_option "--with-libedit" ←　これ
  582
  583         configure_option -R "--with-png-dir" "/usr/X11"
  584     fi
```


``` bash
phpenv install 7.1.9
phpenv rehash
```

## Composer導入
``` bash
curl -sS https://getcomposer.org/installer | php
mv composer.phar /usr/local/bin/composer
composer install
```

## eccubeを導入
``` bash
phpenv local 7.2.0
composer create-project ec-cube/ec-cube ec-cube "4.0.x-dev" --keep-vcs
```


やっとインストールが始まった。

<img width="670" alt="スクリーンショット 2018-10-16 12.24.34.png" src="https://qiita-image-store.s3.amazonaws.com/0/1088/594f635b-3ad1-929a-03b2-8adea0844919.png">
やったね。

選択されたテストサイトが構築されました。
デフォなので、DBはSQLiteになっています。


起動してみます

```
cd ec-cube
bin/console server:run
```

 <img width="472" alt="スクリーンショット 2018-10-16 12.30.50.png" src="https://qiita-image-store.s3.amazonaws.com/0/1088/9be9cf11-639c-0ec5-8360-e300bb86feeb.png">

起動したようですのでブラウザで確認

<img width="1376" alt="スクリーンショット 2018-10-16 12.31.42.png" src="https://qiita-image-store.s3.amazonaws.com/0/1088/0fadca3a-a02a-d2be-1a7e-9848a9b5a6f8.png">
ショップページはどの道大きく変えますが、2系と比べてこのままでも使えるものになっていました。

<img width="1376" alt="スクリーンショット 2018-10-16 12.38.15.png" src="https://qiita-image-store.s3.amazonaws.com/0/1088/1ebab871-8051-89d3-eaa4-4ca035a32813.png">

ID: admin
PW: password


<img width="1376" alt="スクリーンショット 2018-10-16 12.39.20.png" src="https://qiita-image-store.s3.amazonaws.com/0/1088/18cdb4ae-83cc-5769-e9c0-7cebe763e5dd.png">


管理画面はシンプルで、動作も早い印象でした。SQLiteを使っているからなので、他のDBに変えてどこまで遅くなるかはわかりませんが、読み込みは流石の最速なのでviewの開発は２系より楽そうな印象でした。

**プラグインは心配でした。**
決済プラグインは追いついてくれると思いますが、商売上必要なプラグインが全て揃っている状態ではなさそうです。ヤマトCSVプラグインのように、2系と3系で買い直したものもありましたので、4系でもおそらく買い直しが必要になる可能性があります。過去に自分が2系から3系に変えた時はビジネスロジックの変更が必要でした。4系でもビジネスロジックも変えないといけないように感じたため、特に2系からの移植は諦めることになるかもしれません。

**機能の開発は難しくなったかもしれません。**
Symfonyの学習は少々癖があり、PHPだけを触ってきた方には辛いものになりそうです。


**外注している場合にも問題があります。**
交友関係のあるWeb屋からSymfonyとRailsを扱える人数を比べた場合、Rasils開発者なら見つかりますが、Symfonyって聞かない気がします。Symfonyを扱えるWEBの開発者は少なく、外注も高価になる方向に進む気がします。ただ業務ツールを作っていた人ならいると思います。既存でお付き合いがある業者があるとしても、場合によっては別の業者を探さないといけなくなるかもしれませんし、発注方法も変えていかないといけない気がします。

それでも４系にする意味ってのはありまして、まずはPHP自体の速度が上がっているので顧客体験速度は倍近くに上がります。プラグイン機構も変わりましたので、2系ではフックにプラグインをぶら下げすぎて劇おそになっているけれど、2番目に呼ばれるプラグインを改良しているから絶対触っちゃダメ！っていう環境を経験している人いると思いますが、それは無くなります。その代わり全部作り直しですけれど。

**PHP5問題が解決されます。**
2系で使われているPHP5のサポートが切れますが、今のECCube2はPHP7に変更できません。もちろん頑張ればできたのですが、先の例やプラグインの未対応もあって既存のECを作り込んでいればいるほど、意外とできないものでした。内部に顧客の個人情報を溜め込むアプリケーションとしては驚異の解決が保証されているPHP7で動くECCube4に変更したいところです。


**Symfonyも慣れさえすれば開発速度が上がります。**

**プログラムの流用はほぼできません**
2系の運用を行なっているのでしたら、在庫管理や配送状況などはAPIでくっつけていると思いますが、独自で作ってきた昨日はメソッド単位なら流用できるでしょうが、全体としての流量は難しいと思います。過去の自分のように決済フローのなかに分岐をうじゃうじゃ書いているとかしていると、これは作り直しです。



#その他

試してダメだったこと

ヘッダを検索できたら余計な回り道が全ていらなくなるので、
なんとかならないかと適当に各種ライブラリパスに追加してみたけどダメだった。
この辺全く詳しくないので誰か教えて欲しい

```
  #export C_INCLUDE_PATH=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/:$C_INCLUDE_PATH
  #export CPATH=$CPATH:/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/
  #export LIBRARY_PATH=$LIBRARY_PATH:/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/
  #export GXX_INCLUDE=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/
  #LIBRARY_PATH=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/
  #OBJC_INCLUDE_PATH=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/
  #CPLUS_INCLUDE_PATH=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/
```