2013-04-23 27 views
33

私はこれに夢中になりました。 、許容メモリサイズが262144バイト(24576バイトを割り当てようとしました)

Allowed memory size of 262144 bytes exhausted (tried to allocate 24576 bytes) 

TODOリスト

チェックするphpinfo()右php.iniのルートを持って、それを編集:

は、私は次のメッセージが表示されました。

memory_limit = 128M 

へ 変更のmemory_limitは、値のmemory_limitが結果と詐欺のphpinfo()を変更していることを確認してください:

memory_limit 128MB 128MB 

チェック.htaccessファイルと(必要ない)も

php_value memory_limit 128M 

とを追加しました(エラー行の前に)PHPのように変更する:

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

メモリは128Mに設定されていますが、それでもエラーは発生します。

エラーは、Swiftライブラリ(電子メールを送信するライブラリ)内のabstractSmtpTransport.phpにあります。そのため、私のコードintは機能しません。

編集:はい、以前はApacheを再起動していました。

EDIT 2: @patrick、しかし何も低い値、28M INTすべてのファイル、としようと試み

Apacheを再起動エコーなかったことを添加し、同じエラー(するphpinfo新しい値を示した)

を用いて試み-1 、再起動、および同じエラーです。

編集3:許可されたメモリが割り当てられたメモリよりも大きいのは奇妙ではありませんか? (許可されたメモリサイズが実際の許可されたメモリの下にあるという事実にもかかわらず)

+6

ダブルチェックするだけで、変更後にApacheを再起動しましたか? – raidenace

+0

もっと低い値を試してみるとどういう意味ですか? – eis

+1

いくつかの殺害再帰? –

答えて

104

私は私の問題は、あなたから少し異なっているが、それは他の誰かを助け場合、私はこの回答を投稿します参照してください。私はをMの代わりに略記として使用していました。私のmemory_limitを定義するとき、黙って無視していました。私はそれを整数(バイト)に変更し、問題は解決されました。

私のphp.iniが次のように変更されました:memory_limit = 512MBmemory_limit = 536870912これは私の問題を解決しました。他の人と一緒に役立つことを願っています!あなたはPHPの略語hereを読むことができます。

幸運を祈る!

編集

Yaodongが指摘するように、あなたは同じように簡単代わりにバイト値を使用しての、「M」、正しい速記を使用することができます。私はデバッグのために私のバイト値に変更してから、それを元に戻すのをやめました。

+6

+1。私は+10をすることができませんでした。これは何年に渡って何人の人が捕らえなければならないのでしょうか? PHPはユーザーフレンドリーである必要があります –

+20

'MB'ではなく' M'を使用してください – yaodong

+0

+1はMBまたはバイトの代わりにMを使用します。はるかに読みやすく、制限を変更するためだけにコンバータを使用する必要はありません。 –

1

この回答が参考になるかどうかを確認してください。特に、CLIインがスクリプトがブラウザを介して実行されている場合とは異なる可能性があります。

Allowed memory size of X bytes exhausted

+0

いいえ、自分のコードにiniが設定されていません。成功することなく、成功させるために使っているものだけです。 – monxas

6

262,144バイトの値が診断の鍵です。このマジックナンバーがPHPの質問にポップアップしています。どうして?これは値を使用することができない値で制限を更新しようとすると、PHPはそのメモリ制限として終了します。空の文字列はこのメモリ制限を生成し、正しい '128M'の代わりに '128MB'のような不正な単位表記となります。

262,144バイトは256キビバイトです。混乱したときにPHPがその価値に恵まれているのはなぜですか?

許容されているメモリが割り当てられたメモリよりも大きいのは奇妙ではありませんか?

表示される割り当て量は、最近の割り当ての試行であり、メモリの制限を超えて実行されたものです。 Allowed memory size in PHP when allocating lessを参照してください。

0

、あなたのアプリケーションでモデルを使用してget_object_varsを使用して($モデル)とあなたの配列にこれをプッシュしている場合は、モデルにこの機能を追加します。

public function get_objects(){ 
     return (get_object_vars($this)); 
    } 

とあなたの配列に、次のように追加します。

array_push($array,$model->get_objects()); 
0

私は、メディアのアップロード時にWordpressの制限値を設定しようとしていました。私はいくつかのブログからアドバイスを受けましたが、私は64MBから2GBに上限を引き上げるつもりは言及しません。

は、私は次のことをやった:

以下の整数とWPのADMIN中(php.iniの)ファイル作成:

upload_max_filesize = 2000MB 
post_max_size = 2100MV 
memory_limit = 2300MB 

私はすぐに私のWordpressのダッシュボードにログインしようとすると、このエラーを受信します

上記情報「排出262144バイト(24576バイトを割り当てしようとした)の許容メモリサイズ」:それは働いていたかどうかを確認この鎖の中で私はすごく助けになりました。 (通常BTWんスタック)

私は次へのphp.iniファイルを変更:

upload_max_filesize = 2000M 
post_max_size = 2100M 
memory_limit = 536870912M 

大きな違いが唯一M、ないMBを使用し、高そのメモリ制限を設定しました。

変更されたPHP.iniファイルを保存したらすぐに保存して、再度ログインしてログイン画面が再表示されました。

私が行って、メディアのアップロードを確認し、論理積強打:私はまだApacheの再起動していない

Image showing twordpress media folder “Add New” box, with limits stated as “MAXIMUM UPLOAD FILE SIZE: 2 GB”

...しかし、すべてがよさそうです。

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

+0

私はしばしば、あなたのサーバ上でどのノックが効いているのかを知らずに、メモリ制限を非常に高く設定している人たちを見ています。 16ギガのRAMがあり、2ギガのメモリ制限がある場合、例えばメモリリークに遭遇した場合、メモリ使用量を最大限に引き出すために8つのプロセス(理論上)が許可されます。 あなたのエラーは、〜24KBで256KBの限界が使い尽くされたことを示しています。そのため、memory_limitを2 Gigに設定するのはやや高いです。ここでは384Kの制限が働いたり、あなたのケースでは4MegのHIGH値でも動作します。それで、あなたは16ギガのRAMに収まる4000のApacheプロセスを、8ではなく残します。 – TBlaar

関連する問題