Magento2の日本語での動作状況まとめ
この記事は公開から 1年以上が経過しています。現在の最新情報との整合性については弊社では一切の責任を負いかねます。
「CentOS6でMagento2用の環境を作る際の注意点」で、Magento2を日本語で動作させる場合に、PHPバージョンによっては動作しないケースがあることをお伝えしました。
その後調査を進めたところ、更に衝撃的な結果が得られました。
CentOSとUbuntu LinuxにおけるMagento2の動作検証結果
まず最初に動作検証結果です。
この結果は2016年7月時点のもので、かつ標準のCentOS(Redhat Enterprise Linux)とUbuntu Linuxに対して行ったものです。Amazon LinuxやScientific Linuxなどの派生ディストリビューションや、ホスティング会社が独自に提供している構成のLinuxについては対象外ですので、注意してください。
CentOS6.xとPHP5.6/7.0に対するMagento2の動作検証結果
まずはCentOSに対する動作検証結果です。
OSバージョン | 6.x | 7.x | |||
PHPバージョンと パッケージ |
5.6 | Remi | ◯ | Remi | ◯ |
IUS | ◯ | IUS | ◯ | ||
epel | - | epel | - | ||
7.0 | Remi | ☓ | Remi | ☓ | |
IUS | ◯ | IUS | ☓ | ||
epel | ◯ | epel | ☓ |
「CentOS6でMagento2用の環境を作る際の注意点」でお伝えしたとおり、PHP7.0のパッケージではRemiのものはCentOS6.xと7.xともに動作しませんでした。
また、CentOS7.xではIUSとepelの両リポジトリが提供するパッケージも動作しませんでした。
この結果から言えることは、「CentOS(RedHat Enterprise Linux)7.xではMagento2をPHP7.0上で日本語サイトとして動かすことができない」ということです。
Ubuntu Linux 14.04LTSと16.04LTSに対する動作検証結果
次にUbuntu Linuxに対する動作検証結果です。
Ubuntu Linux 14.04ではondrejのパッケージを使用し、16.04は標準のパッケージを使用しました。
(16.04では標準でPHP7が付属します)
OSバージョン | 14.04 LTS | 16.04 LTS | |||
PHPバージョン | 5.6 | ◯ | - | ||
7.0 | ◯ | ◯ |
結果として、Ubuntu Linuxは特に問題なく動作しました。
弊社でも普段開発およびお客様にご提供する環境としてUbuntu Linuxを使用していますので、これはある程度予想できていた結果です。
CentOSで動作しない原因とは
この現象はMagento2に起因するものではなく、PHPのIntlエクステンションとlibICUの相性によって引き起こされます。
正しく動かない環境では、
$bundle = new \ResourceBundle('ja_JP', 'ICUDATA'); $icuData = iterator_to_array($bundle['calendar']['gregorian']['monthNames']['format']);
というコードを実行した際に、月の別名を格納する子要素の「abbreviated」が取得できません。
Magento2が管理画面でカレンダーを描画するためにこの値を使用しているため、値が取得できない環境で管理画面を日本語にすると即エラーが発生します。
対策
さて、CentOSでMagento2をPHP7.0で動作させ、管理画面を日本語にすると確実にエラーが出ることは明らかになりました。
弊社からご提示できる対策としては、以下のようなものがあります。
- CentOSではなくUbuntu Linuxに乗り換える
- CentOS上で独自にコンパイルしたPHPやlibICUを使う
- 当座(2017年半ばまで)はPHP5.6を使う
もちろん、動作するパッケージが提供されることが最も望ましいですが、直ちにというのは難しいのではないかと思います。
- お知らせ (34)
- Magento Open Source (169)
- Adobe Commerce (86)
- Magentoトピックス (349)
- Magentoバージョンアップ (11)
- OroCommerce (1)
- AkeneoPIM (16)
- Shopware (26)
- 世界のプライバシー保護規制 (11)
- OroCRM (14)
- Typo3 (9)
- イベント (27)
- Mage-OS (1)
- エクステンションリリース情報 (75)
- Mautic (1)