エックスサーバーブロガーのヒラノ(HiranoLAZY )です。
エックスサーバーで開始された旧サーバーから新サーバーへクリック一つで移行できる『新サーバー簡単移行』。
旧サーバー(sv800以前のサーバー)から新サーバー(sv2114~)ではサーバースペックが飛躍的にアップしており、わかりやすい所で言うとメモリが16GBから192GBと12倍もアップしているようです。
続々と旧サーバーから移行しているようですが、一部ユーザーから「新サーバーに移行したら500 Internal Server Errorが出て表示されない」というトラブルが発生しているようです。
今回はそんな新サーバー簡単移行で500 Internal Server Errorが発生する原因と解決方法に迫って行きたいともいます。
目次
エックスサーバー、新サーバー簡単移行で500 Internal Server Error
まず、500 Internal Server Errorが発生する原因ですが、
- ディレクトリのパーミッション
- CGI ファイルのパーミッション
- Perl のパスの違い
- 改行コード
- 改行コード(Macの場合)
- UTF-8 の BOMコード
- 文法エラー
- 「モジュール」の不足
- .htaccess の問題
- Perl のバージョン
- Apache のバージョンが 2.4 以上
と、様々な原因が挙げられます。
しかし、今回やった事と言えば新サーバー簡単移行というクリック一つで済む事だけです。
まさに「何もやってないのに壊れた」という状態だと思います。
実際に、新サーバーに移行したけど500 Internal Server Errorが出て旧サーバーに戻された方もおられるようです。
ではまず500 Internal Server Errorの原因を探していきましょう。
500 Internal Server Errorの原因を調べる
サーバーエラーが出たらエラーログを確認。
エラーログの確認のやり方は、
- エックスサーバーのサーバーパネルにログイン
- ログファイルをクリック
- ドメイン選択画面でエラーログを確認したいドメインを選択します
- エラーログの一覧のタブをクリック
- エラーログをダウンロードします。
これでエラーログをダウンロードすることが出来ました。
次にダウンロードしたエラーログをメモ帳等で開いて確認してみましょう。
おそらく凄まじい英数字が記述されていると思います。
上から古いエラーログ、一番したが最新のエラーログの順番になっています。
一番下のエラーログを確認してみると、
[日付] [core:alert] [pid] [client IP] /home/サーバーID/ドメイン名/public_html/.htaccess: Invalid command ‘suPHP_ConfigPath’, perhaps misspelled or defined by a module not included in the server configuration
このように記述されていないでしょうか?
ここで重要なのは『suPHP_ConfigPath’, perhaps misspelled or defined by a module not included in the server configuration』です。
これを簡単に訳すと「.htaccessに’suPHP_ConfigPath’という謎のコメントがあるよ」ということです。
なるほど、原因は.htaccessにあるようですね。
では.htaccessを確認してみましょう。
.htaccessを確認する
エックスサーバーでの.htaccessの確認方法は、
- エックスサーバーのサーバーパネルにログイン
- .htaccess編集をクリック
- ドメイン選択画面で.htaccessを編集したいドメインを選択します
- .htaccess編集のタブをクリック
※.htaccessはウェブサーバーの動きを制御する大事なファイルですので編集前には必ずバックアップを取るようにしましょう。
.htaccessをチェックしてみると、プラグインなど入れてる方はちょっと違うかもしれませんが、
[html] suPHP_ConfigPath /home/サーバーID/初期ドメイン/xserver_php/AddHandler fcgid-script .php .phps
FCGIWrapper “/home/サーバーID/初期ドメイン/xserver_php/php-cgi” .php
FCGIWrapper “/home/サーバーID/初期ドメイン/xserver_php/php-cgi” .phps
[/html]
と、こんな感じになっていると思います。
ちなみに、この形がエックスサーバーでの.htaccessの初期の状態です。
先ほどのエラーログファイルでチェックしたエラーは「.htaccessに’suPHP_ConfigPath’という謎のコメントがあるよ」でしたよね。
ということで、
一行目をまるごと削除します。
FCGIWrapper “/home/サーバーID/初期ドメイン/xserver_php/php-cgi” .php
FCGIWrapper “/home/サーバーID/初期ドメイン/xserver_php/php-cgi” .phps
[/html]
こういう形になったと思います。
もう一度ホームページを更新してみると、
500 Internal Server Error
あれ、治らない?
では、もう一度エラーログを確認してみましょう。
エラーログを確認してみると、
[日付] [fcgid:warn] [pid] (104)Connection reset by peer: [client IP] mod_fcgid: error reading data from FastCGI server,
さっきとちょっと違ってますね。
ここで重要なのは『mod_fcgid: error reading data from FastCGI server』
これを簡単に訳すと「FastCGI serverからのデータが読み取りエラーになってるよ」ということです。
この解決方法はFastCGIを切ることなのですが、エックスサーバーの新サーバーではFastCGIは切ることが出来ません。
ではどうすればいいのでしょうか?
答えはまたまた.htaccessにありました。
エックスサーバーでFastCGIを切る方法
FastCGIとは、CPU負荷を軽減し実行を高速化できるサービスで、多数のアクセスが見込まれるドメインでは有効(On)にすることでCPU負荷軽減および高速化を図ることができます。
しかし、FastCGIが原因で500 Internal Server Errorが発生しているなら切るしかありません。
FastCGIを切る方法は、.htaccessの、
[html] FCGIWrapper “/home/サーバーID/初期ドメイン/xserver_php/php-cgi” .phpFCGIWrapper “/home/サーバーID/初期ドメイン/xserver_php/php-cgi” .phps
[/html]
の記述をまるごと削除するだけでOK。
これでもう一度ホームページをチェックして500 Internal Server Errorが発生していなかったら解決です。
新サーバー簡単移行で500 Internal Server Error!原因と解決方法 in エックスサーバーまとめ
エックスサーバーが mixhost に対抗するために新サーバー簡単移行対象ユーザーを一気に増やしてきましたね。
この記事が少しでもWordPressユーザーのお役に立てればと思います。
リンクエックスサーバー