WordPress での 500 エラー (Internal Server Error)

つい最近だが、このサイトを構成する WordPress をアップグレードした。
すると、それに合わせたかのように当サイトにコメントを投稿しようとしたら 500 エラー (Internal Server Error) になってしまうという報告を受けた。

調べてみるとコメント投稿時に入力するメール アドレスが間違っていると、500 エラーになるらしい。

本サイトは IIS 7.5 を使っているので、500 エラー (Internal Server Error) などいくつかのエラーは IIS のカスタム エラー ページが表示されるようになっている。
そこで、一時的にカスタム エラー ページを止めて確認したところ、「ERROR: please enter a valid email address.」と表示されるようになった。

エラーメッセージからすると、WordPress 自体が出力しているように思える。
つまり、入力されたメール アドレスを WordPress のプログラムが不正を検出して通知している可能性が大だということだ。

裏付けを取るために、WordPress のソース コードをレビューしてみる。
手っ取り早く上記エラー メッセージの文字列で検索をかけると、wp-comments-post.php ファイルの 80 行目付近で見つかった。

wp-comments-post.php

さらに関数 wp_die() がどう定義されているを調べるために、「functions+wp_die」を正規表現を使った検索文字列として検索する。
関数 wp_die() は wp-includesfunctions.php ファイルの 2765 行目付近で見つかる。

wp-includesfunctions.php

今度は関数 _default_wp_die_handler() を探すと、関数 wp_die() と同じ wp-includesfunctions.php ファイルの 2791 行目付近で見つかる。

wp-includesfunctions.php

ここまで見ると、コメント投稿時にメール アドレスの入力を間違えると 500 エラーになるのは WordPress の仕様だということが分かる。

つまり、WordPress を使った Web サイトでコメント投稿時にメール アドレスを間違えたときにきちんとエラー表示されるようにするためには、IIS を使っている場合は IIS の設定で 500 エラーのときにカスタム エラー ページではなく、詳細なエラーを返すようにしなくてはならないということだ。

しかし、よく考えるとここで返される 500 のエラーは HTTP のステータス コード (RFC 2616 を参照、500 のステータス コードは RFC 2616 の 10.5.1 章、ステータス コードの和訳は Wikipedia 日本語版を参照) であり、Web アプリケーションの入力値検証結果に使うのは間違っているのではないだろうか。
これは明らかに WordPress の仕様のバグと言っても過言ではないだろう。

関連記事

  • PHP のアップグレード版リリースに気づいていなかった2009.9.20 (日) PHP のアップグレード版リリースに気づいていなかった ちょっと知っている人が見れば直ぐに分かることだし、既に何度も現況しているように、この Web サイトは WordPress を使って構築されている。 そして WordPress は PHP という言語を使って作られている。 実は 2009 年 5 […]
  • PHP をインストール [Install Maniax 3]2010.1.4 (月) PHP をインストール [Install Maniax 3] 正月の三が日が終わった。 昨年末からのインストールマニアックス 3 は、先の記事でわかるように、ようやく IIS のインストールが終わったところだ。 1 月 12 日が締切だというのにこんなことで大丈夫だろうか。 […]
  • PHP の動作がおかしいので再インストール [Install Maniax 3]2010.1.11 (月) PHP の動作がおかしいので再インストール [Install Maniax 3] インストールマニアックス 3 も残すところ一日となって迫って焦っているところだが、ここに至って PHP がエラーになってしまいどうにもうまく動いてくれない。 MySQL の操作を Web 経由で楽に行なおうと、phpMyAdmin […]
  • スキルチャージプログラム構築記 (その4)2009.5.3 (日) スキルチャージプログラム構築記 (その4) その1, その2, その3と書きつづった Microsoft スキルチャージプログラムの Web サーバー導入キットの構築も後一息。 それでは、IIS に PHP を組み込み、PHP で作られた Web […]

コメントを残す