要点:
.htaccessにphp_value max_input_vars 3000を追加する、php.iniでmax_input_vars = 3000を設定する、またはwp-config.phpに@ini_set('max_input_vars', 3000);を追加します。あなたのホスティング環境に合う方法を選んでください——下の表を参照。
max_input_vars ディレクティブは、サーバーが1リクエストあたりに処理する POST 変数の最大数を制限するセキュリティ対策として PHP に導入されました。WordPress のページが上限を超える数の変数を送信すると、サーバーは超過分を静かに切り捨てます——その結果、メニューの項目が失われ、テーマの設定が消え、プラグインの設定ページが保存に失敗します。
WP STAGING のサポートチケットでは、最も多い引き金は、大きな設定ページを持つ WooCommerce または WPML のサイトが、保存時にフィールドを静かに切り捨てるケースです。
max_input_vars を 3000 以上に引き上げると、ほとんどの場合これらの症状が解消します。正しい方法はあなたのホスティング環境によります。どれが当てはまるか分からない場合は、サーバー設定ファイルを編集する前にホスティングプロバイダーに連絡してください——すべての共有ホストが下の各方法を許可しているわけではありません。
Contents
どの方法を使うべきか?
| ホスティングの種類 | 推奨される方法 | 備考 |
|---|---|---|
| 共有 cPanel(Apache) | .htaccess を編集 |
サーバーの再起動は不要 |
| 共有ホスティング(nginx) | php.ini またはホストのパネル |
方法はプロバイダーによって異なる |
| マネージド WordPress(WP Engine、Kinsta など) | ホストのコントロールパネルまたはサポート | ファイルの直接編集が制限される場合あり |
| SSH のある VPS または専用サーバー | グローバルな php.ini を編集 |
保存後に PHP-FPM を再起動 |
| クラウドマネージド(Cloudways、SpinupWP など) | ホストのコントロールパネル | 各プロバイダーが独自の設定 UI を提供 |
ホストが下のファイルベースの方法をどれもサポートしていない場合は、サポートチケットを開いてください——max_input_vars の引き上げは定型的な依頼です。
PHP Max Input Vars の上限を増やす方法
最も一般的な3つの方法は、.htaccess、php.ini、wp-config.php を編集することです。あなたのホスティング環境に合う順序で試してください。最初の方法が効かない場合のみ、次に進みます。
方法1:.htaccess ファイルを編集する
.htaccess ファイルは WordPress インストールのルートディレクトリーにあります。ファイルマネージャーまたは FTP クライアントで開きます。

ファイルが見つからない場合、ほとんどのホスティングのファイルマネージャーはドットファイルを既定で隠します。隠しファイルを表示 のようなオプションを探して有効にしてください。

.htaccess をテキストエディターで開き、次の行を追加します。
php_value max_input_vars 3000

サーバーがセキュリティ拡張の Suhosin を使っている場合は、代わりにこれらの行を使います。
php_value suhosin.request.max_vars 3000
php_value suhosin.post.max_vars 3000
3000 という値は、大きなメニューや複雑なプラグイン設定ページを持つほとんどの WordPress インストールをカバーします。保存後も症状が続く場合のみ、さらに増やしてください。
方法2:php.ini ファイルを編集する
php.ini ファイルも WordPress インストールのルートディレクトリーにあります。そこにファイルが存在しない場合は、空のファイルを作成します。

ファイルをテキストエディターで開き、この行を追加または更新します。
max_input_vars = 3000

ファイルを保存します。シェルアクセスがあれば、PHP-FPM または Apache を再起動して値を即座に反映させます。共有ホストでは、次の PHP リクエストが新しい設定を自動的に取り込みます。
方法3:wp-config.php ファイルを編集する
ホスティングのパネルまたは FTP クライアントにログインし、ファイルマネージャーに移動します。WordPress インストールのルートにある wp-config.php を開きます。

/* That's all, stop editing! */ と書かれた行の前に、次の行を追加します。
@ini_set( 'max_input_vars', 3000 );

ファイルを保存します。この方法は PHP の実行時に上限を設定し、.htaccess や php.ini を直接変更できない共有ホスティング環境で機能します。3000 はサイトが必要とする任意の値に置き換えられます——複雑な管理ページをカバーするため、3000 以上をおすすめします。
レガシーに関する注意:PHP 5 ホスティング
PHP 5 は 2018 年 12 月にサポート終了を迎えました。ホストがまだ PHP 5 を動かしている場合、上の php.ini のアプローチが当てはまりますが、同じディレクトリーに同じディレクティブで php5.ini と user.ini ファイルも作成する必要があるかもしれません。
max_input_vars = 3000
すぐにホストに連絡してアップグレードしてください——PHP 5 のサーバーはもうセキュリティパッチを受け取りません。Suhosin 拡張のディレクティブ(suhosin.get.max_vars、suhosin.post.max_vars、suhosin.request.max_vars)は、Suhosin がインストールされたサーバーでのみ関係します。最新の PHP 8.x のサーバーでは必要ありません。
解決策がうまくいかない場合の対応
上の方法で問題が解決しなかった場合は、ホストに連絡する前にこれらの確認を進めてください。
保存後に変更が保持されない。 ホストのコントロールパネルが、あなたが作成したローカルファイルを上書きするマスター php.ini を備えていることがあります。ホストの PHP 設定パネル(cPanel では ソフトウェア → PHP バージョンの選択 → オプション)を開き、そこで直接 max_input_vars を設定してください。
値は設定されているのに症状が残る。 別の PHP ディレクティブが本当のボトルネックかもしれません。<?php phpinfo(); ?> を含む一時ファイルを Web ルートに作成し、ブラウザーで開いて max_input_vars を検索し、新しい値が有効かどうかを確認します。post_max_size も確認してください——それが設定ページの送信データより小さい場合、max_input_vars だけを上げても問題は解決しません。
phpinfo() に新しい値が表示されない。 PHP は複数の設定ファイルを読み込めます。phpinfo() の出力には Configuration File (php.ini) Path が表示されます——そこに記載されたファイルを編集したか確認してください。cPanel のサーバーでは、有効な php.ini は WordPress の Web ルートではなく、ユーザーのホームディレクトリーにあることがよくあります。
wp-config.php のアプローチが効かない。 一部のサーバー構成は、disable_functions ディレクティブによって ini_set() を無効にしています。その場合は、代わりに .htaccess または php.ini の方法を使ってください。
関連する PHP 設定の上限についての助けは、WordPress の PHP メモリ上限を参照してください。
このディレクティブの公式仕様は PHP マニュアル:max_input_vars にあります。
まとめ
max_input_vars の引き上げは1行の設定変更ですが、正しいファイルを選ぶことが重要です:共有 Apache ホストには .htaccess、VPS 環境には php.ini、サーバー設定ファイルを変更できない場合は wp-config.php。変更が定着しない場合、ホストのマスター設定がそれを上書きしている可能性が高いです——上のトラブルシューティングの手順が最も一般的な原因をカバーしています。
サーバー設定ファイルを編集する前に、必ずサイトをバックアップしてください。さらに助けが必要な場合は、私たちのサポートチームがお手伝いできます。
関連記事: