EC-CUBE4 商品画像のアップ(登録)ができないときの対処方法

EC-CUBE4の商品登録の際の画像のアップロードに関して、ちょっと落とし穴があったので、紹介します。結論から言うと拡張子の問題でした。

先日、EC-CUBE4でのショッピングサイト制作案件のお客様から、画像がアップできないとお問い合わせをいただきました。EC-CUBE4では以前のバージョンのように自動リサイズ機能がないため、アップした画像がそのまま反映されてしまうという仕様のようです。そんなわけで、納品の際のレクチャー口を酸っぱく、画像をあげる時は絶対リサイズしてくださいとつたえていました。あれ程言ったのに、さてはリサイズせずに画像アップしてるなと思い、やんわりと諭そうとしたら、言われた通りリサイズしてるとの主張。実際にアップできない画像を送ってもらったら、ちゃんとリサイズされてました。ちゃんとやってるじゃん、と思いながらアップすると、以下のエラーが、、

サイトからのメッセージ「アップロードに失敗しました」

何でだろうとさっそくGoogle先生に聞いたら、「.htaccess」に関する内容がちらほら見かけました。実はEC-CUBE4の最上位のディレクトリにはこんな記述があり、

# デフォルトテンプレートの状態で 2M 以上となるため
<IfModule mod_php7.c>
    php_value upload_max_filesize 5M
</IfModule>

これによって、5M以上のサイズの画像はアップできないようになっている。先ほども記述したようにEC-CUBE4ではサーバーへのアップ時の自動画像リサイズ機能は実装されてないので、逆にこれでアラートあげてくれないととんでもないことになってしまう。ほんとんどのユーザーがスマホで見てる時代なので、個人的には1Mで制限をかけたいぐらい。

今回のケースはちゃんとリサイズされた5M以下の画像だったので、「.htaccess」は問題ではない。そうすると、これまで経験から察するに拡張子の問題ということになるかなぁと。

お客さんからもらった画像を見ると拡張子は「.JPG」と大文字になってました。お客さんに確認したら最近、ソニーのカメラを買って、それで撮り始めたとのこと。ソニーのサイバーショットを買ったらしいが、どうやらそのカメラから出力される画像の拡張子が「.JPG」で、今までと違っていました。

EC-CUBE4 画像拡張子「.JPG」をアップさせる方法

さすがにお客さんにいちいちリネームしてもらうのは酷なので、拡張子「.JPG」でもアップできるように修正。方法は、以下ファイルのファイルを修正します。
修正ファイル:/src/Eccube/Controller/Admin/Product/ProductController.php

▼変更前
316行目:$allowExtensions = ['gif', 'jpg', 'jpeg', 'png'];

▼変更後
316行目:$allowExtensions = ['gif', 'jpg', 'JPG', 'jpeg', 'png'];

これで無事に拡張子「.JPG」の画像もアップできるようになりました。

もう頼らない、さらば残業代!これまでの生活を変えるチャンス!

最近、働き方改革やらなんやらで、残業規制がかなり強化されている。特に上場企業はどこの会社も厳しいのではないのかな。パパは千人規模の会社で働いてるけど、月の残業時間目標15時間以内の大号令がしかれている。これじゃぁ、残業代稼げない、、、。なんとか忙しいを言い訳にして残業申請して、これまでは上司が適当だったから承認もらえてたけど、今期からの上司は厳しくなりそう。

今まではサブロク協定で定められている月の残業時間45時間以内に調整すれば、特におとがめ無かったので、それをいいことに、月40時間程度の残業分を稼いでたけど、これって結局何も変えられないスパイラルだった。要するに「9:00~18:00まで普通に働く」⇒「1日平均2時間残業」⇒「夜9:30帰宅」⇒「夕飯食べて風呂入る」⇒「寝る」の無限ループ。平日はほとんど家族と過ごす時間もなく、副業にチャレンジすることも無かった。

でもこれからは、極力残業しないで、さっさと帰ってその時間で稼ぐことをやろうと思う。本業と副業がうまく相乗効果を発揮できるようなことをして、とにかく稼ぐことをやっていけば、もっと稼げるようになるはず。