PHPコードを記述していた際、何気なく保存してそのPHPファイルを含むページを読み込もうとすると、なぜか「500 Internal Server Error」が表示されて全く読み込めなくなることがあります。
この原因のほとんどはPHPコードの記述ミスですが、PHPコードを正しく書いていても500エラーが発生することがあります。
今回は、PHPコードの記述ミスを含めた500エラーの原因と対処法をそれぞれ紹介していきます。
この記事の内容
対処1:PHPの記述でエラーが起きている場合
500エラーが起きる原因のほとんどは、PHPコードの記述ミスです。
処理ごとのセミコロンが抜けていたり、「{}」の数を間違えてブロック関係のエラーが起きているなどの基本的なエラーから、配列のインデックス指定ミスや引数エラーなどで処理を正常に実行できなかった場合に発生します。
ですので、PHPコードを修正した後に500エラーが起きた場合は、PHPコードを見直してエラーを特定して修正するようにしてください。
例外処理を活用する
例外処理を活用してエラーを検出するという方法を取れば、エラーは残ったままであるものの500エラーは回避することができます。
PHPコードのどこに問題が合って500エラーが起きているかわからない場合は、以下のようにtry-catch構文を使ってください。
try { //もともとの処理 } catch (Exception $e) { echo $e->getMessage().PHP_EOL; }
このコードをPHP記述ミスの心当たりのある場所に記述することで、エラーメッセージを表示できて根本的な原因を特定しやすくなるほか、catchエラー時にメールを送信させるなどのエラー処理を記述することが出来ます。
ただし、ブロックを間違えているといったPHPの書き方そのものを間違っている場合は、try-catchでもエラーを拾うことが出来ない場合があるので注意してください。
対処2:パーミッションの設定を修正する
記述したPHPコードが間違っていないのにかかわらず500エラーが起きる場合、そのPHPファイルから別のファイルにアクセスしているかどうか確認してください。
アクセスしようとしたファイルに読み込みや書き込みが制限されている場合で、try-catchによる例外処理もしていない場合は500エラーが起きてしまいます。
この場合、FTPソフトや利用しているレンタルサーバーのサーバーパネル、SSH接続などでパーミッションの設定を「755」に設定してください。
「755」にすることで読み込みと書き込みの両方を許可する設定になり、PHP実行時も正常にファイルアクセスができるようになります。
対処3:正常に動作していたときのバックアップで復元する
PHPコードのエラーが特定できず、正常に動作していた時のバックアップがあった場合はそのバックアップで復元してみてください。
もし、バックアップを使った復元で500エラーが直ったならPHPコードの記述ミスである可能性が高いので、今度は念入りにテストしながらコードを記述して、次エラーが起きてもすぐに特定して作業をロールバックする手間を作らないようにしましょう。
対処4:使用しているPHPのバージョンを切り替える
PHPのバージョンが古い場合、最新の文法や関数に対応していないことがあります。
もし古いバージョンのPHPを使用しているのであればバージョンを上げるようにしてください。
PHPのバージョンの上げ方は、使用しているソフトウェアやレンタルサーバーにより異なるので、それぞれのオンラインマニュアルなどを参考にバージョンを変更するてください。
対処5:PHPで動作するCMSのバージョンを最新にする
WordPressなどのPHPで動作するCMSは、バージョンが古いだけで500エラーが起きる可能性があります。
これはPHPのバージョンとも関係している話であり、CMSのバージョンが古いままPHPのバージョンや使用しているデータベースのバージョンを最新にしてしまった場合に起きる可能性がある500エラーです。
500エラーが起きてしまうとCMSの管理画面に入ることができず、管理画面から更新することすらできなくなりなります。
ですので、公式サイトからダウンロードして最新バージョンで上書きして更新します。
WordPressの場合
WordPressの場合は以下の手順でバージョン更新しますが、万が一に備えて必ずバックアップを取るようにしておいてください。
- 公式サイトからWordPress本体をダウンロードします。
- ダウンロードした圧縮ファイルを解凍します。
- FTPソフトなどを用いて圧縮ファイルの中身をまるごとアップロードして上書きします。
- アップロードが完了するまで、しばらく待機します。
- アップロードが完了したら500エラーが直っているか確認します。
WordPressに限らず、CMSのバージョンが問題だった場合、このように公式サイトからCMS本体をダウンロードしてアップロードすることで解決できる可能性があります。
対処6:.htaccessを修正する
レアケースではありますが、サーバープログラムとしてApacheを使用している場合、「.htaccess」の記述内容が問題でエラーが起きている可能性があります。
.htaccessの記述を間違えてたり、PHPを使うための記述がされてない場合は、PHPファイルの内容にかかわらず500エラーが発生します。
以下のPHPを使うのための記述が「.htaccess」のどこにも見当たらない場合は追記してみてください。
#phpのバージョンが5.Xの場合 AddHandler x-httpd-php5 .php .phps
#phpのバージョンが7.Xの場合 AddHandler x-httpd-php5 .php .phps
「.htaccess」でPHPの利用を指定する記述は、レンタルサーバーによって若干異なるため、マニュアルを参考にして下さい。
また、「.htaccess」を削除すると500エラーが改善される場合もありますので、一度削除してみるのもいいでしょう。
削除や変更をする際が、「.htaccess」必ずバックアップをとって、いつでも復元できる状態にした上で対処するようにしてください。