【WordPress】「設定を保存できませんでした。」の対処法
この記事では、WordPressで「options.php
」ページの設定を変更した後、「設定を保存できませんでした。」と表示されて、保存できない時の対処法について書きます。
色々原因があると思いますが、僕の場合は、WAFとPOST送信の上限値が原因でした。
とある日以降、WordPressで、「options.php
」ページの項目(例:image_default_size
)を変更して、「変更を保存」をクリックすると、「設定を保存できませんでした。」と表示されて、変更できなくなりました。
WAF設定をオンにしていると、「閲覧できません (Forbidden access)」と表示されることは知っていました。この場合は、契約しているサーバー(僕の場合、ConoHa WING)のWAF設定を一時的にオフにすることで解決します。
「設定を保存できませんでした。」の場合は、どうすればいいのかさっぱり分かりませんでした。調べてもそんなに情報がなく、どうしたものか悩んでいました。
そんな中、下記サイト様を見つけました。どうやら、POST値の制限がデフォルトでは1000になっているのが原因っぽいです。
参考:ConoHaサーバーでPOST値の制限が1000個までと気づくまで。 | 開発 | 2020年6月4日 | モノグサにお灸
そこで、「ConoHa WING」の「php.ini
」に「max_input_vars = 10000
」を書いて、制限値を増やしてみると、無事に解決しました。
本記事では、僕みたいな初心者が困らないように書きます。僕自身、初心者なので、いまいち理解できていませんが、同じように悩んでいる方、参考にしてみてください。
なお、一概に本記事の方法が原因ではない可能性もあります。あくまで、解決策の一つとして捉えてください。
【原因1】「php.ini」のPOST値制限
なんでこれが原因なのか推測(どうでもいい方はスルーして)
WordPressでは、デフォルトのPOST送信の上限が1000に設定されています。
POSTというのは、情報を送ることを指すようです。僕は素人なので分かりませんが、恐らく、WordPressで1つの項目を変更して保存すると、サーバーに1つのPOSTが送信される…的な感じだと思います。
この設定の上限値が1000になっていることで、「options.php
」の情報が正常に送られないことがあるようです。
僕の場合、ある日を境に「設定を保存できませんでした。」と表示され始めました。ここで納得しました。通常、「options.php
」の設定項目は、POSTが1000を超えないようになっていますが、インストールしているWordPressプラグインやテーマによって、1000を超えることがあります。
確かに、最初のころはプラグインもそんなに導入していなかったので、設定を変更した際、送信するPOSTが1000に収まっていたんだと思います。それが、色々カスタマイズしていくうちに、送信する量も増えて、1000を超えちゃったんだと思います。
つまり、「options.php
」の設定項目が多い方ほど、「設定を保存できませんでした。」と表示されると思います。「options.php
」にアクセスして、スクロールバーの大きさを見てみましょう。かなり小さいはずです。それだけ設定項目があるということです。
POST送信の上限値を増やす手順
契約しているサーバー側の設定から変更できます。「ご自身のサーバー名+PHP編集」で調べてみましょう。例えば、「エックスサーバー」を契約している方は、「エックスサーバー PHP編集」といった感じで検索します。
僕は、「ConoHa WING(コノハ・ウィング)」を契約しているので、そちらでの解説になります。コントロールパネルにアクセスして、ログインします。
上部の「VPS」ではなく、「WING」タブになっていることを確認し、左側の「サイト管理」→「サイト設定」→「応用設定」をクリックします。
「PHP設定」をクリックして展開します。
入力フォームが表示されるので、右側にある鉛筆マーク(🖉)をクリックします。
入力できるようになるので、「max_input_vars = 10000
」と入力します。既に別のコードを書いている場合は、改行してから書きます。「保存」をクリックします。
max_input_vars = 10000
恐らく、「max_input_vars
」がPOST送信の上限値を指しています。こちらを、デフォルトの「1000」から「10000」に変更するという意味です。
1000から10000に変更するので、よっぽどのことがない限りは、エラーが出なくなると思います。「options.php
」の設定項目があまりにも多い場合は、10000でも足りないかもしれません。
ほとんどの方は、足りないどころか、余るくらいだと思います。「一気に増やすのは不安…」という場合は、「max_input_vars = 5000
」といった感じで、もう少し数字を減らすといいかもしれません。
僕の環境だと、3000でもいけました。3000でいけたので、今も「max_input_vars = 3000
」のままです。再びできなくなったら、数字を増やしたいと思っています。
max_input_vars = 3000
保存すると、左下に「成功しました」とポップアップが表示されます。
これで、「options.php
」の設定を保存した時、「設定を保存できませんでした。」のエラーが出ないと思います。僕の環境では、正常に「設定を保存しました。」と表示されました。
僕の場合は、WAF設定も合わせてオフにする必要がありました。「max_input_vars = 10000
」は書き込んだままでいいですが、WAF設定は、設定を変更する時だけオフにして、それ以外の時は、必ずオンに戻します。
【原因2】WAF設定
「WAF(ウェブアプリケーションファイアウォール)」が原因の場合は、「設定を保存できませんでした。」ではなく、「閲覧できません (Forbidden access)」と表示されると思います。
この場合は、下記記事を参考にしてみてください。契約しているサーバーの設定画面から、一時的にWAF設定をオフにします。
感想
以上、WordPressの「options.php
」ページで、「設定を保存できませんでした。」と表示された時の対処法でした。
本設定が不要になった場合は、「php.ini
」に書き込んだコードを削除しましょう。
余談ですが、デフォルトの画像サイズを「フルサイズ」にするときに、今回の問題にぶつかりました。