WordPress: PHP Fatal error: Allowed memory size of xx bytes exhausted

WordPress に小さな不具合が発生していることに気付きました。

統計画面に表示されるウィンドウの一部に、「サイトに重大なエラーがありました」と出て来ます。

wordpress サイトに重大なエラーがありました。この場所に普段何が表示されていたかな〜?と思い出そうにも思い出せない。
そして、どんな問題が発生しているのかも分からない。

素直に、1行下に書いてある「WordPressでのデバッグをさらに詳しく見る。」のリンクをクリックしてみました。そして、エラー内容が見えるようにする方法を書かれていることが分かりました。

やるべき事は、wp-config.php に次の2行を書き込むこと。厳密には、WP_DEBUGはデフォルトで書き込まれていて、値が false なので、これをtrue に書き替え、さらにデバッグ情報を出力するファイルを指定します。

define('WP_DEBUG', true);
define('WP_DEBUG_LOG', '/tmp/wp-errors.log' );

特にApacheの再起動などの操作は必要ありません。

その後、WordPress プラグインの統計画面を操作して、/tmp/wp-errors.log を開いて見ると、

[12-Jan-2020 12:10:52 UTC] PHP Fatal error: Allowed memory size of 104857600 bytes exhausted (tried to allocate 20480 bytes) in /home/...../notes/wp-includes/wp-db.php on line 1995

と記録されていました。
要するに、PHPに割り当てられたメモリが少ないってこと。今、割り当ててあるメモリサイズが 104857600 bytes。そこに、さらに20kB要求したらエラーになったってことのようです。

しかし、この104,857,600 bytes ってどこから来ているの?
PHPにメモリを割り当てることが出来るファイルは、wp-config.php や php.conf など複数あります。過去ログを検索してみたところ、私の場合はどうやら .htaccess で行っているみたい。
.htaccess を開いて見たところ、見つかりました。

php_value memory_limit 100M

エラーメッセージの数値から、この行で指定している値が近いとみた。
試しに100M を 128MB に編集してみたところ、「134217728 bytes exhausted」にエラーメッセージが変化。
おっ、ここだ!しかし、128MB でも足りないの?
さらに増やして、160MBに増やしてみたところ、エラーが出なくなりました。

php_value memory_limit 160M

それで、エラーになっていたところはどうなったかというと、、、、、

現在時刻かよ〜。メモリ割り当てを 60MB 増やしてまで表示すること?エラーのままでも良かったような気もしますが、気になっていたところが解決しました。

コメントを残す