ロリポップからエックスサーバーへ移行した途端『500 Internal Server Error』が出た!
先日、このWebサイトのサーバーをロリポップからエックスサーバーに移行しました。正常に表示されているか確認したら、『500 Internal Server Error』を知らせるエラー画面が表示されているではありませんか。現在は修正しましたので大丈夫ですが、このときはさすがに焦りました。僕と同じ手直しでエラーを解消できる人もいると思いますので、その方法を書きとめておきます。
.htaccessファイルの記述が原因だった
結果から言うと、.htaccessファイルの記述を一部削除したところ500エラーが解消しました。どうやら、ロリポップのときに.htaccessに記述していた文字列が、エックスサーバーではエラーになってしまうらしいのです。
具体的に、.htaccessの中にある
php_value upload_max_filesize 〇〇M
php_value post_max_size 〇〇M
という記述を削除したところエラーが消えました!
状況を説明すると
あまり詳しくないのですが、軽く状況を説明しますね。まず、表示されたのは以下の画面です。
いま思い出してもゾッとします。移行手順で何か手違いがあったのではないかと思いました。エックスサーバーさんがご丁寧に原因を教えてくれているので、文字部分を書きだしてみますね。
500 Internal Server Error
アクセスしようとしたページは表示できませんでした。
CGIやPHPなど内部参照におけるエラーの為、目的のページが表示できなかったことを意味します。
以下のような原因が考えられます。
- 断続的に発生する場合:
CGIの負荷が大きい(CGIプロセスが多数動作している)。 - 常に発生する場合:
CGIのパーミッション設定に誤りがある。 / CGIのソースコードに問題がある。 / .htaccessの記述に誤りがある。
断続的というよりは常に発生するんで、後者の3つのうちのどれかに該当すると思われます。そこでネットで調べてみたところ、「.htaccessの中にphp_valueとかの記載があればエックスサーバーではエラーになるよ」的な内容が散見されました。
僕の場合は次の文字列を記述していました。
このphp_valueというのは、サーバーに最大アップロードサイズを定義しているディレクティブ(指示文)です。これをゴッソリ消すことでサイトの表示が正常になされました。これ以外に問題がなかったこともわかり、晴れてエックスサーバーへの引っ越しが完了したというわけです。
なお今回削除した設定は、エックスサーバーのサーバーパネルから改めて設定ができます。
サーバーパネル > php.ini設定 > (使用しているドメイン名を選択) > php.ini設定変更タブ
その他の設定 の memory_limit、post_max_size、upload_max_filesize の3つの数値を書き換えます。
memory_limit ≧ post_max_size ≧ upload_max_filesize のように大小関係に決まりがあるようなんですが、僕は違いがあまりわかっていないので全部同じ数値にしてます。
最大アップロードサイズの設定は、
ロリポップ → .htaccessファイル
エックスサーバー → php.iniファイル
ということになるんですかね。
php_valueを消しても500エラーが解消されない方は、僕ではわかりませんので他をあたってください。すみません。
なぜそんな記述をしていたのか
僕はWordpressを使ってサイトを管理していますが、いろんな記事を書いていくうちにこう思うようになってきたんですよね。
「もっとファイルサイズの大きな動画を埋め込みたい」
調べていくと、.htaccessファイルに前述の記載をして最大アップロードサイズを自由に設定できることがわかりました。リミットを自分で決められるということですね。
大は小を兼ねると言いますから、とりあえずは大きくしとけということで2ケタから3ケタへと設定を変更しました。そして、そんな設定をしたことも忘れたころ、ロリポップからエックスサーバーへの引っ越し作業を行い、今般のエラー騒ぎが起きるに至ったというわけです。
僕と同じような流れでエラーに直面する人がどれだけいるのかわかりませんが、未来の君のために残しておきました。