1
1

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 5 years have passed since last update.

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

Posted at

ECCubge4インストール

ECCube4が公開されたので、
mojaviにしたmacに、phpenvを使って、ECCube4の導入を目指します。

関連するものを全部入れます。

zlibとか、readlineとかlibeditとか、諸々入れておきます。

xcode-select --install
brew install re2c

zlib

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

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

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~~~がないったものなので、
すんなり 通る人も中にはいるかもしれません。

phpenv install 7.1.9

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

重要だったこと。

ほとんどがphpenvがらみの問題でした。

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

コメントアウトする場所は1箇所のみで、だいたい580行あたりにあります。
php-buildがwith-libeditは上書きするので更新しておきます。

  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
phpenv install 7.1.9
phpenv rehash

Composer導入

curl -sS https://getcomposer.org/installer | php
mv composer.phar /usr/local/bin/composer
composer install

eccubeを導入

phpenv local 7.2.0
composer create-project ec-cube/ec-cube ec-cube "4.0.x-dev" --keep-vcs

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

スクリーンショット 2018-10-16 12.24.34.png やったね。

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

起動してみます

cd ec-cube
bin/console server:run
スクリーンショット 2018-10-16 12.30.50.png

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

スクリーンショット 2018-10-16 12.31.42.png ショップページはどの道大きく変えますが、2系と比べてこのままでも使えるものになっていました。 スクリーンショット 2018-10-16 12.38.15.png

ID: admin
PW: password

スクリーンショット 2018-10-16 12.39.20.png

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

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

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

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

それでも4系にする意味ってのはありまして、まずは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/
1
1
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
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?