ファイルのアップロードでFatal errorが出る

ユーザーさんによるシステムの不具合報告です。できるだけ状況を詳しくご報告ください。

モデレータ: webmaster

返信
kmwebs
記事: 3
登録日時: 2009年9月15日(火) 00:42

ファイルのアップロードでFatal errorが出る

投稿記事 by kmwebs » 2009年9月15日(火) 01:23

最近、同じレンタルサーバ会社の別サーバに引越ししたところ、
画像ファイルのアップロードでこのようなエラーが出るようになりました。

Fatal error: Allowed memory size of 16777216 bytes exhausted (tried to allocate 8192 bytes) in /usr/home/********/html/cmsdesigner/include/cmsdconfig.php.inc on line 65


phpinfo.phpで新旧サーバの状態を比べてみたところ下記のような状態でした。

・upload_max_filesize … 100M (新旧とも)
・post_max_size … 100M (新旧とも)
・memory_limit … 16M (旧は無し、新のみ)


画像のサイズを変えて色々試したところ、ファイルサイズでなく、
ピクセルサイズが大きいものがエラーになっているような感じがします。

・600kb 2048px(横長) … ×
・90kb 2048px … ×
・600kb 1024px … ○
・90kb 800px … ○

スキーマでの制限は、3Mにしています。
phpのバージョンは、旧サーバが4.4.2、新サーバが4.4.7です。

何卒よろしくお願いします。

webmaster
Site Admin
記事: 1451
登録日時: 2004年12月10日(金) 10:09

Re: ファイルのアップロードでFatal errorが出る

投稿記事 by webmaster » 2009年9月16日(水) 18:48

kmwebsさん、Fatal errorが出るとのことで、ご迷惑をおかけしております。

CMS Designer内部で利用している画像処理ライブラリは「GD」と呼ばれるもので、
そのGDが内部で使用するメモリ量に、この現象は依存しております。

GDの使用メモリ量は、弊社でも過去に何度か調査したことがあったのですが、微妙に
一貫しておらず、総ピクセル数におおよそ比例することは分かったのですが、具体的に
何倍か、ということまでは分かっておりません。

ただ、経験的に、ピクセル数×4バイト前後のようです。

例えば2048x2048ピクセルですと、2048*2048*4 = 16384KB = 16MB超

となり、memory_limit = 16M では足りないことになります。

jpgかPNGかなどによっても変わってくるようですので、大目に見て、×5バイトぐらいの
メモリ量を確保して頂くと、より安全かと思います。

memory_limitが変更できないケースもあるかと思いますが、その場合は申し訳
ありませんが、アップロード前に画像サイズを縮小して頂くなどの運用的な回避策を
お願いできませんでしょうか。

お手数をおかけしますが、よろしくお願い致します。m(__)m

kmwebs
記事: 3
登録日時: 2009年9月15日(火) 00:42

解決しました

投稿記事 by kmwebs » 2009年11月24日(火) 14:27

memory_limit の変更が出来る環境でしたので、
32M に変更してみたところ、アップロードできるようになりました。

ありがとうございました。

返信