web-dev-qa-db-ja.com

メディアアップロード時のメモリエラー、Wordpressは96Mを超えることはできません(512が利用可能ですが)。

これは既知の問題であることを認識していますが、WPAnswersおよびWordpressのサポートフォーラムに記載されている情報を使用して対処することはできませんでした。

私のWorpdressシングルサイトインストールでは、メディアアップローダーはいつも私にエラーを投げています

    out of memory (allocated 99614720) (tried to allocate 3760 bytes) 

割り当てられたメモリの量は多かれ少なかれ常に同じです - それは約96メガバイトにする必要があります...しかし、私のサーバーではphpのメモリ制限は512メガに設定され、ポストサイズは12メガ、最大アップロードサイズは8メガ

これはVPNサーバーで、1.5GBのメモリがあります。

Wordpressは300-400K以下の小さい画像でもエラーを投げます。

使ってみた

    define('WP_MEMORY_LIMIT', '128M');

または

   define('WP_MAX_MEMORY_LIMIT', '128M');

しかし、どちらも(単独でも一緒でも)うまくいきませんでした。実際、スローされたエラーは常に同じで、Wordpressは両方を無視していたという印象を受けました - 他の設定も試してみました。同じではありません

メモリ制限を128Mに下げたり、256Mに戻したり、httpサービス(Apache)を再起動したり、サーバー全体を再起動したりするなど、phpの設定を変更しようとしましたが、何も変わりません。

私はプラグインを無効にすることにしましたが、それらが問題に対して最終的に責任がないように見える唯一の方法です。

エラーは常に258行目から来ていたので、wp-includesフォルダ内のmedia.phpの257行目を編集することにしました。

   @ini_set( 'memory_limit', apply_filters( 'image_memory_limit', WP_MAX_MEMORY_LIMIT ) );

私はWP_MAX_MEMORY_LIMITを96MB以上の値に置き換えました。例えば128Mや256Mです。

しかし、関係なく、割り当てられたメモリは96MBを超えませんでした。 WP_MAX_MEMORY_LIMITを16M、32Mなど96以下の値に下げてみました。その場合、実際に私が下限を設定していたので、割り当てられたメモリはより低くなりました - しかし、どうして96以上になることはできませんか?それでも、私はなぜワードプレスがそんなに多くかかるのか理解していません、それでも、なぜ私は128に設定することができず、問題がついに解決されるかどうかを確認できないのですか?画像アップローダに問題があるだけです。

私も使ってみました

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

私のwp-configでは、これも96Mの制限を変更していません。ただし、96未満の値に設定すれば、これを下げることができます(結果として生じるメモリエラーは対応する値を示します)。

私は私のWordpressがインストールされている場所からphpinfoを実行しました、そして利用可能なメモリは確かにそれがサーバに設定されているものです... 512M!だから私はなぜWordpressが何をしていてもそれよりも少ない量を使うように見えるのかわからない。

何か手がかりはありますか?

ありがとうございました

1
unfulvio

あなたは問題を間違った方法で見ています。あなたが見ているエラーはWordPressから来るエラーではなく、それはPHPエラーです。

どういうわけか、どこかで、何かがメモリ制限を96Mに制限しています、そしてそれがそれをやっているのはWordPressではありません

それが、WordPressが実際にはほとんどのサーバーのメモリを制限できないことです。 ini_setなどを使用して制限を増やそうとしていることはわかっていますが、それは単なるケースのことです。時々それは上限をより高く設定することができます。ほとんどの場合、PHPは単にその行を無視します。

あなたはまた、メモリがどのように機能するのか誤解しています。これは、「Wordpressが300〜400K以下の画像でもエラーをスローする」という行によって明確にされています。圧縮された画像のサイズは、圧縮されていない画像がメモリに取るサイズとは関係がありません。それがすべて解決策です。メガピクセルが重要です。 1ピクセルは4バイトです。 800万ピクセル(8メガピクセル)を表現するには32メガバイトのメモリが必要です。結果として生じる圧縮されたJPGのサイズは無関係です。 WordPressは、そのコピー元のコピーと修正バージョンを作成しているコピーの2つのコピーもメモリに保持する必要があります。だから、たくさんのメモリが必要です。

しかし、繰り返しますが、WordPressはほとんどの場合メモリ制限を設定できません。それで何かが96Mにそれを制限しています。これはWPで扱える画像の最大サイズを厳しく制限します。 96Mという制限がどこから来ているのかがわかるまでは、WordPressのコアコードなどを見ることは、ここでは少し時間の無駄です。

4
Otto