WordPressでレンタルサーバー移行中に「500 Internal Server Error」が発生【解決済み】

先日、当ブログでレンタルサーバー移行方法を紹介しする記事を書くために「さくらのレンタルサーバ」から「エックスサーバー」の移行作業をしました。

【保存版】WordPressをさくらのレンタルサーバからエックスサーバーに移行する方法

そこで超初歩的な理由でつまづいてしまい、解決策を見いだせないまま2時間ほど復旧に時間を要してしまいました。

この記事では、同じ症状でお困りの方のためにレンタルサーバー移行中に「500 Internal Server Error」が発生した場合の解決方法についてまとめています。

「500 Internal Server Error」の解決方法

先に結論だけ言っておくと、今回の「500 Internal Server Error」は、.htaccessファイルをメモ帳で保存したことが原因でした。

具体的には

  • .htaccessファイルをメモ帳で保存したとき、目に見えない余計な文字列(BOM)が勝手に挿入されたから

です。

次の手順により解決をしました。

1、テキストエディタを準備する

まずは、Windows付属の「メモ帳」ではなく、専用のテキストエディタを準備します。

おすすめは、多くのプログラマやエンジニアも愛用している無料テキストエディタ「TeraPad(テラパッド)」です。

2、.htaccessをテキストエディタで開く

TeraPad(テラパッド)の場合は「ファイル」→「開く」で「.htaccess」を選択して開く。

または、「.htaccess」→「TeraPad(テラパッド)」にドラッグ&ドロップして、.htaccessのコードを表示させましょう。

3、UTF-8(N)で上書き保存する

「ファイル」→「文字/改行コード指定保存」をクリックします。

文字コードを「UTF-8」→「UTF-8(N)」に変更してから「OK」をクリックしましょう。

あとはFTPソフトで「.htaccess」をアップロードして上書きすれば完了です。

今回のケースでは、これで「500 Internal Server Error」が解決して、WordPressの管理画面にもログインできるようになりました。

「500 Internal Server Error」が発生した原因

僕が今回陥ってしまったエラーは「500 Internal Server Error」というものです。

エラーメッセージ画面には、

>アクセスしようとしたページは表示できませんでした。

500 Internal Server Error

CGIやPHPなど内部参照におけるエラーの為、目的のページが表示できなかったことを意味します。

と表示されていました。

500 Internal Server Errorとは、

  • サーバー内部で発生しているエラー

です。

具体的な原因としては、以下のようなものが考えられます。

CGIの負担が大きい(CGIプロセスが多数動作している)

→ ブログ・サイトにアクセスが集中しているケースです。

こちらは、ネームサーバー書き換え前なので考えられません。

仮にこのケースだと、しばらく時間が経過すると正常に表示されるようになるはずです。

CGIのパーミッション設定に誤りがある

→ フォルダやファイルへのアクセス権に誤りがあるケースです。

基本的には

  • .htaccess → 606
  • wp-config.php → 600
  • その他のフォルダ → 705
  • その他のファイル → 604

が適切ですが、確認したところ問題ありませんでした。

CGIのソースコードに問題がある

→ WordPressの「header.php」「footer.php」「functions.php」などのファイルの記述に誤りがあるケースです。

レンタルサーバーの移行前には問題がなかったので考えられませんでした。

.htaccessの記述に誤りがある

→ サーバーを制御するための設定ファイルである「.htaccess」の記述に誤りがあるケースです。

レンタルサーバーの移行作業時に一部書き換える必要があったため、今回、最も怪しいと感じたケースとなります。

【上級者向け】エックスサーバーのエラーログを解析しよう

エックスサーバーでは、このようなエラーが発生したときに「何が原因でエラーが発生したのか」という記録を逐一残しておいてくれています。

まず、『エックスサーバー』に移動してから、「ログイン」→「サーバーパネル」をクリックしましょう。

「サーバーID」と「サーバーパスワード」を入力してログインしてください。

エックスサーバーには「ユーザーアカウント」と「サーバーアカウント」のIDとパスワードがそれぞれ別々用意されているので間違えないようにしましょう。

サーバーパネルが開くのでアクセス解析の項目にある「エラーログ」をクリックします。

該当するドメインの「選択する」をクリックします。

「ダウンロード」をクリックします。

「ドメイン名.error_log(例:cartoonjp.xyz.error_log)」というファイルがダウンロードされるので、無料テキストエディタ「TeraPad」で開いてみます。(メモ帳でもOKです。)

例えば、14行目のエラーメッセージを見てみると、次のように記載されています。

[Fri Apr 12 18:27:27.198829 2019] [core:alert] [pid 12823] [client 60.100.194.30:57990] /home/webcommu/cartoonjp.xyz/public_html/.htaccess: Invalid command '\xef\xbb\xbf#', perhaps misspelled or defined by a module not included in the server configuration, referer: https://cartoonjp.xyz/wp-admin/

パッと見た感じでは何のことか分からないですよね。

じっくり確認していくと、

  • /home/webcommu/cartoonjp.xyz/public_html/.htaccess
  • Invalid command ‘\xef\xbb\xbf#’(Google翻訳で)

というのが読み取れます。

Google翻訳も駆使しながら解析していくと、

  • .htaccessファイルが問題
  • 無効なコマンド ‘\ xef \ xbb \ xbf#’

ということが分かりました。

Googleで「’\xef\xbb\xbf#’」と検索をすると、どうやら「BOM」と呼ばれるテキストであることが分かります。

ここで思い出したのは、PHPファイル(wp-config.php)などをメモ帳で書き換えると、目に見えない余計な文字列(BOM)が勝手に挿入されてエラーとなってしまうことです。

そこで初めに”「500 Internal Server Error」の解決方法”で紹介したとおり、メモ帳で保存した「.htaccess」ファイルをTeraPadで保存し直しました。



コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

ABOUTこの記事をかいた人

サラリーマンをしながら、当ブログを運営していましたが、2018年に独立し現在はフリーランスとして活動しています。今まで、数々のWebサイト・ブログを構築してきました。このブログでは、今までの経験で得た知識を活かし、Web制作・SEO関連を中心に、最新のIT関連ニュースを発信。また、ファイナンシャル・プランナー技能士の資格を活かして金融関係の情報も発信しています。