先日、当ブログでレンタルサーバー移行方法を紹介しする記事を書くために「さくらのレンタルサーバ」から「エックスサーバー」の移行作業をしました。
そこで超初歩的な理由でつまづいてしまい、解決策を見いだせないまま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」と「サーバーパスワード」を入力してログインしてください。
サーバーパネルが開くのでアクセス解析の項目にある「エラーログ」をクリックします。
該当するドメインの「選択する」をクリックします。
「ダウンロード」をクリックします。
「ドメイン名.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で保存し直しました。