当サイトには広告が含まれます
スポンサーリンク
WordPress

mixhostでWordPressのPHPメモリ上限を上げる方法

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

後述するコードを上記いずれかのファイルに追加/変更することで設定を変更可能。

下記コードの数値はメモリ上限を「512MB」にする場合の設定。数値は任意。
書式は「512M」のような型で、「~MB」はNG、「~M」でOK。
設定値は、PHP環境設定の「php.ini」が優先される(或いはデフォルトとなる?)。php.iniよりも低い数値が他のファイルに設定されていた場合、それは無効となる模様。
「php.ini」の変更だけでは設定が有効にならない場合、「wp-config.php」「htaccess」「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 );
}
  • 6・8・18行:「512M」を任意の数値に変更
    • 6行目はマルチサイト時の設定
  • 15行:バイト表示の「536870912」を任意の数値に変更
  • 「WP_MEMORY_LIMIT」:メモリ上限
  • 「WP_MAX_MEMORY_LIMIT」:管理画面でのメモリ上限
「default-constants.php」は、WordPressの更新で上書きされる(=更新のたびに修正が必要)。

参考

手っ取り早いのは「php.ini」を使う方法みたいです。
使用しているサーバーの設定でphp.iniを変更出来ない場合は、他の方法を使うって感じでしょうか。

mixhostでの変更方法

mixhostでは、サーバー管理ソフト『cPanel』のコントロールパネル機能「MultiPHP INI Editor」を使ってphp.iniを簡単に編集・設定できる。

php.iniの編集はサポート対象外の機能だそうです。自己責任でどうぞ。
jp17以降のサーバーは「MultiPHP INI Editor」、jp16以前のサーバーは「Select PHP Version」の「Switch To PHP Options」を利用するとのことです。
参考:php.iniの編集方法 – mixhost ヘルプ&サポート

cPanelにアクセス

mixhostのcpanel「MultiPHP INI Editor」

「MixHost」→「マイページ」→「有効なサービス」→「cPanel」→「ソフトウェア」→「MultiPHP INI Editor」。

cPanelにログインしたら上部の検索ボックスに「php」などのキーワードを入力すると「MultiPHP INI Editor」を素早く見つけられます。

MultiPHP INI Editorで設定

基本モード

ディレクトリ/ドメインの選択

MultiPHP INI Editorを開いたら、「基本モード」タブのプルダウンメニューから設定を適用したいドメインやディレクトリを選択。

memory_limitの設定

次にページを下にスクロールしていって、一覧にある「memory_limit」の項目で数値を変更。あとは「適用」ボタンを押せば設定完了。

メモリ上限を設けず無制限にしたい場合は「-1」を入力。
php.iniが存在しない場合は、対象のディレクトリに作成される。
場所は「/public_html/ドメイン名/php.ini」

デフォルト値は「128M」、2倍なら「256M」、4倍なら「512M」、8倍なら「1024M」といった具合で適当に。

使用しているサーバー側の上限もあると思うので環境次第と思われます。

編集モード

MultiPHP INI Editoの編集タブ

編集モードでは、エディターで直接編集が可能。編集したら「保存」ボタンで反映される。

設定が終わったら、管理画面のサーバー情報で設定が反映されているか確認します。

補足/注意

基本モードでは適用ボタンを押すと「memory_limit」以外の設定もいっしょに適用されるため、少し注意が必要かもしれない。

デフォルト状態の設定で少し気になったのは以下。

  • max_execution_time = 30
    • スクリプト自身の実行時間の制限秒数(デフォルト:90秒)
    • 短すぎると各種の更新/実行でタイムアウトが発生しやすくなる
    • タイムアウト防止のために120に変更
  • max_input_time = 60
    • スクリプトで入力を受け付ける最大秒数(デフォルト:60秒)
    • ファイルアップロードの時間も含まれる
    • 大きいファイルや多数のファイルに備えて120に変更
上記2項目は、処理に時間が掛かりすぎるのを制限する機能なので、設定を長くしすぎるのも良くないらしいです。

まとめ

管理画面やサイトの表示が重い・遅い時があったりしたので、今回のメモリ設定に起因しているのかは分かりませんが、とりあえず上限を上げて余裕を持たせてみました。

メモリ上限を上げるのは、管理画面やサイトの表示が重い場合、メモリ不足で「Fatal error: Allowed memory size of ~ bytes exhausted」や「Fatal error: Out of memory」などのエラーが出る場合の対処にもなるようです。

サイトの調子が悪い時は、試してみるのもいいかもしれませんね。

コメントの通知/購読設定
受け取る通知
guest
2 Comments
古い順
新しい順 評価順
Inline Feedbacks
View all comments
タイトルとURLをコピーしました