
EC-CUBEを使って運用しているサイトで、
商品画像をアップロードする際にエラーが発生する との連絡を受けました。
そのファイルは1.5MbyteのJpgファイルでしたが、 該当サイトでは5Mbyteの画像をアップロードしている実績があります。
ログをEC-CUBEのエラーログを確認すると、 以下のメッセージが出力されてました。
1 |
Fatal error(E_ERROR): Allowed memory size of 33554432 bytes exhausted (tried to allocate 20000 bytes) [~~\data\module\gdthumb.php(203)] from 127.0.0.1 |
調べてみると、php.iniの「memory_limit」で 設定された値をオーバーしているとの事。(=メモリ不足)
上記ログの「33554432 bytes」より、 memory_limitは32Mbyteが設定されているようです。
※ローカルPC環境での値です。ロリポップは128Mでした。
対応
運用しているのがレンタルサーバ(ロリポップ)なので、 PHP.iniの細かい設定を変える事ができない為、
gdthumb.phpのMainファンクションの頭の方に、 次の一行を加える事で解決しました。
1 |
ini_set( 'memory_limit', '-1' ); |
memory_limitは-1を設定する事で上限無しにできます。
なお、現在の設定値を知りたい場合は、
1 |
ini_get( 'memory_limit'); |
とすれば、「32M」のような値が返ってきます。
しかし何故、そのファイルだけアップロードで、
多くのメモリを使ってしまうのか謎のままです。
JPEGでも圧縮の形式とか、色々とあるんですかね。。
以上、EC-CUBEネタでした。
http://rihirostyle.com/archives/115
上記記事を拝見しました。
これと同じ事をEC-CUBE3.0.14で行いたいのですが、
3系には data/module/gdthumb.php がありませんでした。
どのファイルに
ini_set( ‘memory_limit’, ‘-1’ );
を追加すれば良いか教えていただけませんでしょうか。
とても困っております。回答いただけると助かります。