1

アップロードしたばかりの画像をトリミングしようとすると、このエラーが発生します。アップロードした画像は約 3MB です。

ここにエラーがあります

<br />
<b>Fatal error</b>:  Out of memory (allocated 45088768) (tried to allocate 15552 bytes) <br />

そして、この関数を使用しようとすると発生します: imagecreatefromjpeg($src);

私は一番上にあります:

ini_set('memory_limit', '256M'); 

では、どうすればメモリ不足になる可能性があり、これをどのように解決すればよいでしょうか? 画像アップロード標準の6MBの制限。(サーバーには問題なくアップロードされますが、crop を使用すると、imagecreatefromjpeg() 関数の行でエラーが発生し、「メモリ不足です..」)

4

3 に答える 3

2

GD で画像処理を行う場合は、常に使用済みメモリを後で解放し、imagedestroyできるだけ早く実行してください。そのため、画像リソースが不要になったら、imagedestroyすぐに破棄してください。

于 2010-11-11T20:46:33.877 に答える
1

PHP では通常、実行時に memory_limit 設定を変更できます。ただし、Suhosin のように、この動作を無効にする拡張機能がいくつかあります。phpinfo() を使用して、PHP セットアップに Suhosin 拡張機能がロードされているかどうかを確認してください。その場合は、*suhosin.memory_limit* 設定が 0 に設定されているかどうかを確認してください。そうであれば、この動作 (memory_limit を更新しない) が説明されるため、システム管理者に連絡して制限を引き上げる必要があります。

http://www.hardened-php.net/suhosin/configuration.html#suhosin.memory_limitも参照してください。

于 2010-11-11T20:41:34.200 に答える
0

安全な解決策は、プロセスが許可された制限よりも多くのメモリを必要とする場合に、画像処理を防ぐ(または少なくとも警告を与える)フィルターを適用することです。imgcreatefromjpegのPHPマニュアルには、画像の処理に必要なメモリを計算できるユーザー関数(コメントを確認)があります。計算に基づいて、アップロードされた画像の最大サイズを制限して、ユーザーがメモリ制限エラーをトリガーしないようにすることができます。

:計算にさらに数MBを追加することを忘れないでください。

ただし、画像サイズを制限しないように主張する場合は、ホストにメモリ制限を増やすように依頼するか、Google画像検索PythonApiなどのサードパーティサービスを使用してみてください。

于 2010-11-11T22:30:08.267 に答える