mixhostでcPanelの「MultiPHP INI Editor」を使って、WordPressのメモリ上限を上げる方法についての設定・備忘録記事です。
WordPressで使用するPHPのメモリ上限は、デフォルト設定だと意外と低いらしく、処理の重いプラグインやページで表示が遅くなったり画面が真っ白になったり、場合によってはメモリ制限エラーが出ることもあるらしいです。
ということで、デフォルト設定のままだったPHPメモリ上限を上げてみました。当サイトで利用しているレンタルサーバー『mixhost』の場合は、cPanelのソフトを使って簡単に設定することができます。
PHPメモリ上限について
メモリ上限の確認
サイトで使用しているWordPressのメモリ上限は、WordPressの「管理画面」→「ツール」→「サイトヘルス」→「情報タブ」→「サーバー」で確認可能。
WordPress5.5のデフォルト値だと「PHPメモリ上限:128M、PHPメモリ上限(管理画面のみ):256M」になっていた。


安定・快適な設定値の目安はよくわかりません(環境によると思う)。
mixhostのスタンダードプランだと割り当てメモリは4GBで余裕があるぽいので、とりあえず1024M(1GB)に設定してみました。
しかし、cPanelのメモリ使用量を見てもそんなに使っていないようなので、他サイトでもよく見かける512MBくらいあれば大丈夫ぽい?
メモリ上限の設定方法
WordPressで使用するPHPメモリ上限の設定方法は複数あり、「memory_limit」というパラメータで指定される。
- php.ini
- ドメインのルートディレクトリ
- htaccess
- ドメインのルートディレクトリ
- wp-config.php
- default-constants.php
- ~/wp-includes/default-constants.php
後述するコードを上記いずれかのファイルに追加/変更することで設定を変更可能。
php.ini
memory_limit = 512M
htaccess
php_value memory_limit 512M
wp-config.php
define('WP_MEMORY_LIMIT', '512M');
default-constants.php
// Define memory limits. if ( ! defined( 'WP_MEMORY_LIMIT' ) ) { if ( false === wp_is_ini_value_changeable( 'memory_limit' ) ) { define( 'WP_MEMORY_LIMIT', $current_limit ); } elseif ( is_multisite() ) { define( 'WP_MEMORY_LIMIT', '512M' ); } else { define( 'WP_MEMORY_LIMIT', '512M' ); } } if ( ! defined( 'WP_MAX_MEMORY_LIMIT' ) ) { if ( false === wp_is_ini_value_changeable( 'memory_limit' ) ) { define( 'WP_MAX_MEMORY_LIMIT', $current_limit ); } elseif ( -1 === $current_limit_int || $current_limit_int > 536870912 /* = 512M */ ) { define( 'WP_MAX_MEMORY_LIMIT', $current_limit ); } else { define( 'WP_MAX_MEMORY_LIMIT', '512M' ); } } // Set memory limits. $wp_limit_int = wp_convert_hr_to_bytes( WP_MEMORY_LIMIT ); if ( -1 !== $current_limit_int && ( -1 === $wp_limit_int || $wp_limit_int > $current_limit_int ) ) { ini_set( 'memory_limit', WP_MEMORY_LIMIT ); }
参考






手っ取り早いのは「php.ini」を使う方法みたいです。
使用しているサーバーの設定でphp.iniを変更出来ない場合は、他の方法を使うって感じでしょうか。
mixhostでの変更方法
mixhostでは、サーバー管理ソフト『cPanel』のコントロールパネル機能「MultiPHP INI Editor」を使ってphp.iniを簡単に編集・設定できる。
cPanelにアクセス
「MixHost


cPanelにログインしたら上部の検索ボックスに「php」などのキーワードを入力すると「MultiPHP INI Editor」を素早く見つけられます。
MultiPHP INI Editorで設定
基本モード
MultiPHP INI Editorを開いたら、「基本モード」タブのプルダウンメニューから設定を適用したいドメインやディレクトリを選択。
次にページを下にスクロールしていって、一覧にある「memory_limit」の項目で数値を変更。あとは「適用」ボタンを押せば設定完了。
デフォルト値は「128M」、2倍なら「256M」、4倍なら「512M」、8倍なら「1024M」といった具合で適当に。


使用しているサーバー側の上限もあると思うので環境次第と思われます。
編集モード
編集モードでは、エディターで直接編集が可能。編集したら「保存」ボタンで反映される。


設定が終わったら、管理画面のサーバー情報で設定が反映されているか確認します。
補足/注意
基本モードでは適用ボタンを押すと「memory_limit」以外の設定もいっしょに適用されるため、少し注意が必要かもしれない。
デフォルト状態の設定で少し気になったのは以下。
- max_execution_time = 30
- スクリプト自身の実行時間の制限秒数(デフォルト:90秒)
- 短すぎると各種の更新/実行でタイムアウトが発生しやすくなる
- タイムアウト防止のために120に変更
- max_input_time = 60
- スクリプトで入力を受け付ける最大秒数(デフォルト:60秒)
- ファイルアップロードの時間も含まれる
- 大きいファイルや多数のファイルに備えて120に変更




まとめ
管理画面やサイトの表示が重い・遅い時があったりしたので、今回のメモリ設定に起因しているのかは分かりませんが、とりあえず上限を上げて余裕を持たせてみました。
メモリ上限を上げるのは、管理画面やサイトの表示が重い場合、メモリ不足で「Fatal error: Allowed memory size of ~ bytes exhausted」や「Fatal error: Out of memory」などのエラーが出る場合の対処にもなるようです。
サイトの調子が悪い時は、試してみるのもいいかもしれませんね。