【WordPress】「Fatal error: Allowed memory size of〜」エラーが表示された時の対処方法!

目次

「info.php」を作成して確認

まずは、テキストエディタで「phpinfo.php」というファイルを作り、その中に以下の記述を追記します。

<?php
phpinfo();

作成した「phpinfo.php」を、WordPressがインストールされている最上位のフォルダ(ルートディレクトリ)に入れ、以下のURLにアクセスします。

http://ドメイン/phpinfo.php/

すると、「php情報」が閲覧できるようになります。
「memory_limit」の項目に記載があるメモリサイズがPHPを稼働している環境の最大のメモリサイズです。

一般的には、「256MB」ぐらいなのですが、
それよりも小さい場合は上限を圧迫してしまっている可能性が高いのです。

この後の手順の通り、引き上げることで解決する可能性がありますので、試してみてください。

PHPのメモリ上限をアップする方法

「php.ini」ファイルを作成し、先ほど同様にWordPressがインストールされている最上位のフォルダ(ルートディレクトリ)に入れます。そして、以下の記述を追記します。

memory_limit = 256M
post_max_size = 50M
upload_max_filesize = 50M
max_input_time = 60

上記の記述を追記することで、PHPの稼働環境のメモリ上限を手動で調整することが可能です!

基本的にはこちらの手順で解決できるかと思います!

それでも直らない場合は

しかし、筆者の場合は、max_memoryでも解決できず、どのようにすればよいか考えていました。

結論からまとめますと、原因はデータベース内の「wp_option」テーブルにある「transient」が増え続けたことでした!
数えてみると、なんとその数「10万」行…。

無限に増え続けまくって、負荷がかかり正常に稼働していないようでした。

「_transient」ファイルとは?

「_transient」ファイルとは、
名前の通り「transient(一時的な)」を意味するキャッシュファイルのような物みたいです。

筆者の環境の場合は、「_transient」や「_transient_dp」というファイルが約「100,000行」もあり、DBに悪影響を及ぼしていました…。

対処方法をまとめてみました。

膨大な「_transient」を整理する対処方法

「transient」がどれだけあるかチェックする

チェックするには、SELECTを使って選択をします。
まずは、以下のクエリを実行します。

// transient を選択する
USE データベース名;
SELECT * FROM `wp_options` WHERE option_name like '%_transient%';

「transient」の名前が入った行を全て拾い出します。

「transient」を削除

膨大に存在する場合は、削除をしておきます。
以下のクエリを実行することで削除することができます。

// transient を削除する
USE データベース名;
DELETE FROM `wp_options` WHERE (`option_name` LIKE '%_transient_%');

たった2ステップで、これまで発生していた問題を解決できちゃいます!
それにしても永遠に増え続けるのは厄介すぎです。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

目次