
WordPressで「WPForms」などのフォームプラグインを使用している際、チェックボックス項目を増やして保存しようとすると「500 Internal Server Error」が発生して困っていませんか?
特にXserver(エックスサーバー)を使用している環境で、WAF設定をOFFにしても直らない場合、原因は「セキュリティ」ではなく「PHPの処理制限(リソース不足)」や「設定ファイルの記述ミス」にある可能性が高いです。
この記事では、実際のサーバーログ解析に基づき、WPFormsでエラーが発生する本当の原因と、決定的な修正手順を解説します。
私の場合、保存処理中に他のタブに移動していたことが原因のようです。
保存が終わるまで10秒ぐらい待てば500エラーは発生しなくなりました。
バックアップからの復帰手順はここを見て⇩
この記事で解決できる症状
- WPFormsでチェックボックスや選択肢を追加して保存すると500エラーになる
- XserverのWAF設定をすべて「OFF」にしてもエラーが消えない
- サーバーログに
mod_fcgid: error reading dataや.htaccess関連のエラーが出ている
原因1:PHPの「max_input_vars」の制限値超え
結論から言うと、チェックボックスが多いフォームでエラーが出る最大の原因は、PHPの設定項目「max_input_vars」の上限に達していることです。
なぜチェックボックスでエラーになるのか?
フォームプラグインは、チェックボックスの選択肢1つ1つを「変数」としてサーバーに送信します。 PHPの初期設定では、一度に送信できる変数の数(max_input_vars)が1000個に制限されていることが一般的です。
高機能なプラグイン(WPFormsやMW WP Formなど)は、1つの項目に対して大量の隠しパラメータを送信するため、見た目上の項目数が少なくても、裏側では制限値の1000個を簡単に超えてしまいます。その結果、サーバーが処理を拒否し、500エラーを返します。
【解決策】php.iniを編集して上限を増やす
max_input_vars = 5000 を追加する
Xserverのサーバーパネルから、以下の手順で設定を変更します。
- Xserverサーバーパネルにログイン
https://secure.xserver.ne.jp/xapanel/login/xserver/server/ - 「PHP」カテゴリの「php.ini設定」をクリック
- 対象のドメインを選択
- タブメニューの「php.ini直接編集」をクリック
- 表示されたコードの末尾(または
[PHP]セクション内)に以下の1行を追記します。

[PHP]
engine = On
default_charset = UTF-8
error_reporting = E_ALL & ~E_NOTICE & ~E_STRICT & ~E_DEPRECATED
display_errors = On
display_startup_errors = Off
max_execution_time = 180
max_input_time = -1
max_input_vars = 5000 ←★ここに追加
memory_limit = 1G
allow_url_fopen = On
allow_url_include = Off
file_uploads = On
- 「設定する(確定)」をクリックして保存
これで、扱える変数の数が5000個まで増え、複雑なフォームでも保存できるようになります。
原因2:.htaccessファイルの記述エラー
もし max_input_vars を増やしても直らない、あるいはサイト全体が不安定な場合は、.htaccess ファイルの記述ミスが疑われます。
実際のログに以下のエラーが出ている場合、これが決定的な原因です。
[core:alert]... /public_html/.htaccess: </IfModule> without matching <IfModule> section
これは、「終了タグ </IfModule> はあるのに、開始タグ <IfModule> がない」という構文エラーです。
プラグインが自動追記した際に壊れたり、手動編集で消し忘れたりした場合に発生します。
【解決策】.htaccessを修正する
- FTPソフトやXserverの「ファイル管理」で
public_html直下の.htaccessファイルを開く - ファイル内を検索し、対になっていない余分な
</IfModule>を削除する - よくわからない場合は、一度
.htaccessのバックアップを取った上で、WordPressの「設定」→「パーマリンク」画面で「変更を保存」ボタンを押すと、正常なファイルが再生成されることがあります。
原因3:PHPのメモリ不足とタイムアウト
WPFormsの保存処理はデータベースに負荷がかかるため、メモリ不足やタイムアウト(時間切れ)で強制終了させられることがあります。
ログに mod_fcgid: ap_pass_brigade failed と出る場合はこれが原因です。
【解決策】メモリと実行時間を増やす
先ほどと同じ「php.ini設定」画面で、以下の数値を変更(または追記)します。
- memory_limit:
200M→512Mまたは1Gに変更
Xサーバーでは、初期値が1GB(1024M)になっています。 - max_execution_time:
30→120または180に変更
Xサーバーでは、初期値が180になっています。
これにより、重い処理でもサーバーが途中で切断せずに耐えられるようになります。
それでも直らない場合の代替プラグイン
Xserverの仕様上、どうしてもWPFormsとの相性が悪い場合や、
無料版の機能に限界を感じる場合は、以下のプラグインへの乗り換えを検討してみてはどうでしょうか?
1. Forminator(高機能・無料)

WPFormsでは有料の「条件分岐」や「計算機能」が無料で使えます。
リソースの使い方が比較的モダンで、エラーが出にくい傾向があります。
- メリット:無料で多機能、チェックボックスの制限設定などが容易。
- デメリット:設定項目が多く少し複雑。
2. Snow Monkey Forms(国産・使いやすい)

日本国内で開発されており、ブロックエディタで直感的に作れます。
「確認画面」が標準でついているのが最大の強みです。
「ブロックエディタ」は、WordPress標準の編集画面のことです。
- メリット:完全日本語対応、確認画面あり、シンプル。
- デメリット:複雑な条件分岐には不向き。
3. Fluent Forms(高速・軽量)

動作が非常に軽く、サーバー負荷が低いのが特徴です。
WPFormsで重さを感じる場合、劇的に改善する可能性があります。
- メリット:爆速、データベース構造が最適化されている。
- デメリット:管理画面の一部が英語。
まとめ
Xserverでフォーム保存時に500エラーが出る場合、WAFを疑う前に以下の3点を確認しましょう。
php.iniにmax_input_vars = 5000を追記する(最優先!).htaccessに構文エラーがないか確認するmemory_limitを512M以上に増やす
Xサーバーでは、初期値が1GB(1024M)になっています。
特にチェックボックスを多用するフォームでは、max_input_vars の制限が最大の壁となります。この設定を見直すことで、ほとんどのケースでエラーは解消されます。
修正は、一個ずつ実施していきましょう。
宣伝です。
Amazonプライムは会員だけの割引やセールも魅力です。
アニメや音楽ライブをみてリラックスしませんか
Amazonプライムをのぞいてみる
「Amazonプライムに登録すると、
送料無料やお急ぎ便、Prime Videoで映画やドラマが楽しめる特典が盛りだくさん!
さらに、Prime MusicやPrime Readingで音楽や本も楽しめます。
今なら30日間無料で試せるので、ぜひこの機会にお試しください!」
Audible
「Audibleで、聞く読書を始めませんか?いつでもどこでも本が聴ける便利さが魅力!あなたのライフスタイルに合わせて、好きなジャンルのオーディオブックを楽しめます。今なら聴き放題が初回30日間無料!お気に入りの本を手軽に楽しんでみてください。」
私は仕事帰りに「異世界もの」のライトノベルを聞きながら帰宅することが多いです。
小説は、想像力の向上や、心がリラックスするのでおすすめです。
「無職転生 ~異世界行ったら本気だす」はおすすめです。
26巻で完結したと思っていたのですが、
その後を描く物語集『蛇足編』が始まってるではありませんか
これは聞くしかないです。
「最弱テイマーはゴミ拾いの旅を始めました」も、おすすめです。
Audibleの聴き放題プランに加入すると0円で聴き放題ですよ。
コメントはここに書いてください。
お問い合わせは、ここに書いてください
