2011-06-11 10 views
5

ユーザーが自分のサイトに画像をアップロードしているときにこのエラーが発生します。PHP致命的なエラー:メモリが不足(割り当てられた80740352)(12352バイトを割り当てようとしました)

エラーメッセージは「PHP致命的なエラーです:メモリが不足しています(割り当てられた80740352)(ホームに12352バイトを割り当てようとしました.......)」 php.iniを使用してこれを修正するにはどうすればよいですか?ここで

は私の現在のアップロードphp.iniの設定

upload_max_filesize = 2000M ; 
post_max_size = 2000M 
max_file_uploads = 8 

私はこのエラーを解決するために追加する必要がある他に何任意のアイデアですか?

+1

アップロード自体ではなく、何をしているにしてもあまりにも多くのメモリを食べるスクリプトです! – deceze

+0

[PHPの "メモリ不足"の問題をどのようにデバッグしますか?](http://stackoverflow.com/questions/6114155/how-do-you-debug-php-out-of-memory-issues) – Gordon

答えて

8

からあなたのメモリ制限を増やします。 file_get_contentsまたはGDライブラリを使用してファイルをメモリに読み込みますか?その場合、memory_limitを少なくともupload_max_filesizeと同じに、できればそれ以上に増やしてください。

GDを使用している場合、GDは画像全体をメモリ内に圧縮しないで保持します。つまり、スクリーンショットの場合はの範囲のメモリを使用します。たとえば、スクリーンショットの場合は1024*768*32 = 25 165 824 bits = 3 MB、14メガピクセルの画像の場合は55MBのメモリが必要です。

画像のコピーを作成する必要がある場合がありますので、memory_limitをメモリに保存する必要がある倍の倍数に設定することを検討してください。また、必ずしもすべての画像を一度にメモリにロードしないようにしてください。 GDで使用されているメモリを解放するには、画像の操作が終了したらハンドル上でimagedestroyを呼び出します。

2

は最適memory_limit値は、あなたがアップロードしたファイルで何をしているかに依存してphp.iniの

memory_limit = ... 
+0

一度に6個の1MBの画像をアップロードすると言った場合の価値に関する提案はありますか? – daza166

+0

私のデフォルトは128Mbで、問題は起こるとは思っていませんが、試してみる必要があります。 6枚の2MBイメージをアップロードしてから、エラーが発生しなくなるまで値を増やしてください。また、ユーザーが10MBを超えるRAW画像をアップロードしないようにしてください。最大アップロードサイズを小さくすることをお勧めします。 –

0

アップロードされたファイルはメモリに保存されるため、予想されるファイルと少なくとも同じサイズのメモリを増やす必要があります。スクリプトの先頭へ

memory_limit = 2000M // better 2200M or above, just in case. 
7
set_time_limit(0); 
ini_set('memory_limit', '20000M'); 

。それに応じて20000Mを変更します。

関連する問題