★★★ たった "1日" でできるWordPressブログの作り方講座 ★★★ はじめてみる
この記事には「PR」「宣伝」が含まれます

ロリポップでPHP(WordPress)のメモリ不足が発生!解決方法の解説

ロリポップでこんなトラブルに遭遇しました。

  • ブログをWordPressで動かしている
  • プラグインもそこまで多く入れてない
  • なのにPHP側でメモリ不足が発生…(困)

このPHPメモリ不足の原因と解決策。

ロリポップで修正する方法を解説します。

※ WordPressに限らずPHP全般でも有効

「サイトに重大なエラー」が発生しまくる

私自身のブログで発生した事件ではありません。

ある方からトラブル依頼を受けていました。

管理画面で何かしらの操作したとき、
↓ 以下のエラーが頻発していたそうです。

サイトに重大なエラーがありました。

WordPressでのデバッグをさらに詳しく見る

↓ 次の操作をすると確率的にエラーになる

  • 管理画面のいずれかのページを開く、
  • 投稿記事の編集ページだったり、
  • メディア一覧ページだったり、
  • コメントの管理ページだったり、

とにかく管理画面でエラーが発生してます。

厄介なのは必ず発生するのではなく、
数回に1回の頻度でランダムに起こることです。

原因はロリポップのPHPメモリ不足と判明

それで原因を色々調べることにしました。

調査していくと、↓こんなエラーが出てたと判明します。

Backend fatal error: PHP Fatal error: Allowed memory size of bytes exhausted (tried to allocate 40960 bytes) in /home/hogehoge/public_html/wp-includes/option.php on line 281

この「Allowed memory size of 134217728 bytes exhausted」というのは「メモリ足りない。メモリ不足」という意味です。具体的には134MBのメモリを消費してました。

最初はプラグインが原因かなと思ったんですよね。

でも結局はロリポップのメモリ設定に問題がありました。

WordPressが必要とするメモリ量が少なすぎたんです。

メモリをWP_MAX_MEMORY_LIMITで拡張したが…

WordPressでは、以下フラグでメモリ上限を変えれます。

WP_MAX_MEMORY_LIMIT

WP_MEMORY_LIMIT option allows you to specify the maximum amount of memory that can be consumed by PHP. This setting may be necessary in the event you receive a message such as “Allowed memory size of xxxxxx bytes exhausted”.

引用元 : https://developer.wordpress.org/apis/wp-config-php/#increasing-memory-allocated-to-php

これに必要なメモリ容量を代入するだけです。

具体的にはWordPressのwp-config.phpを開き、
最後あたりにメモリ容量を増やすコードを追加します。

↓ 具体的なwp-config.phpのコード修正例

/* メモリ上限の拡張 */
define('WP_MAX_MEMORY_LIMIT', '512M');

/* 編集が必要なのはここまでです ! WordPress でブログをお楽しみください。 */

/** Absolute path to the WordPress directory. */
if (!defined('ABSPATH')) {
  define('ABSPATH', dirname(__FILE__) . '/');
}

/** Sets up WordPress vars and included files. */
require_once(ABSPATH . 'wp-settings.php');

このように /* 編集が必要なのはここまでです...*/ の前に記述します。この例ではWP_MAX_MEMORY_LIMITに対して512M = 512メガバイトを割り当てました。

ところがPHPメモリ不足は解決せず・・・

別な方法を探すことにしました。

サーバーの.htaccessでPHPメモリ上限を変更

根本的な解決策は.htaccessで上限設定することです。

ロリポップでは以下の方法で上手く行きました。

1.php_value,php_flagを有効にする

初めにphp.iniでphp_value, php_flagを有効にします。

↓ メニューから「PHP設定」を開く

ロリポップ管理画面 - メニューから「PHP設定」を開く

↓ 対象サイトの「php.ini」⇒「設定」をクリック

ロリポップ管理画面 - 対象サイトの「php.ini」⇒「設定」をクリック

↓ 開いたら一番下の項目をOnにする(画像参照)

ロリポップ管理画面 - 一番下の項目php_value,php_flagをOnにする(画像参照)

このようにphp_value, php_flagを利用可能にします。

そうすると.htaccessの設定が優先されます。

2.php_value memory_limit からメモリ上限変更

そしたら.htaccessを編集していきます。

↓ ロリポップFTPを開く

ロリポップ管理画面 - ロリポップFTPを開く

↓ .htaccessの最後に以下の命令を追加

## メモリ上限を512MBに拡張
php_value memory_limit 512M

↓ 具体的にはWordPress設定の後に書く

# BEGIN WordPress
# "BEGIN WordPress" から "END WordPress" までのディレクティブ (行) は
# 動的に生成され、WordPress フィルターによってのみ修正が可能です。
# これらのマーカー間にあるディレクティブへのいかなる変更も上書きされてしまいます。
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

# END WordPress

## メモリ上限を512MBに拡張
php_value memory_limit 512M

ここでは512MBまでメモリ上限を拡張してます。

その値は必要に応じて変更すればOKです。

これで.htaccessを保存してください。

PHPのメモリ上限が反映されたか確認

PHP側でメモリ上限の反映を確認します。

↓ .htaccessと同じフォルダにtest.phpを作成

<?php
echo ini_get('memory_limit');

↓ そのtest.phpにブラウザからアクセス

作成したテストスクリプトにアクセス。設定したメモリ上限が表示されてればOK

上記のように.htaccessにて設定した php_value memory_limit の値が表示されれば成功です!あとはWordPressでメモリ不足が解決されたか確認してください。

もしメモリ不足が解決しないなら…

さらにPHPのメモリ上限を増やしてみてください。

トラブル解決にお困りならご相談を…

今回みたいなトラブルを解決したい、
でも技術的な知識がなくてトホーに暮れている…

そういう人の為にトラブル解決相談もやってます。

↓ ココナラで次のサービス運営中

WordPressのトラブル解決相談始めました!
WordPressが真っ白になった、デザインが崩れた・・・そんなWordPressのトラブル解決相談ができるサービスをココナラで始めました!もしWPのブログ運営で困った時は是非ご利用ください。お得な割引情報もお知らせ・・・

お困りなら何でもご相談ください。

基本的にいつでも作業代行できます。

The following two tabs change content below.

フク郎

昔はプログラミングに熱中していたが、ブログとWordPressに興味を持ち始め今はサイト・ブログ作りが生きがい。自分の「好き」をブログに変えたい、情報発信したい人に役立つWordPress術・サイト構築術を発信中。一日一歩楽しんでブログ構築できるように読みやすい&楽しい記事作りを心がけています。メールアドレス : fukuropress@gmail.com