エンジニア初学者がPHPのよくわかる教科書で勉強していてつまづいた点と、
教科書には載っていない補足情報を記載できたらと思います。
今回は、500エラーが出た時の対処法(主にエラーの確認方法)です。
500エラーとは
developer.mozilla.orgに記載の内容を引用すると、
HyperText Transfer Protocol (HTTP) の 500 Internal Server Error サーバーエラーレスポンスコードは、サーバーがリクエストを実行を妨げる予期しない条件に遭遇したことを示します。
ということです。
リクエストを実行したいが、予期せぬ何かに妨げられている状態ということらしい。
サーバーがダウンしているのかと思ったのですが、phpの記述ミスが大半な要因だとの意見も。
なので、コードを見直すことをまず第一に行った方がよいということですね。
どうやってコードを見直すか
MAMPでPHPのエラーログを書き出しているファイルがあるので、それを見ます。
ファイル名は「php_error.log」です。
ターミナルを使って操作するので、コマンドを知る必要があります。
(自分は少しLinuxコマンドをかじったことがあるので、表面的に理解しているつもりです。誤っていたら優しめにご指摘ください!)
$ cd MAMP/logs/
$ ls
apache_error.log cloud_mamp.log mysql_error_log.err php_error.log
「php_error.log」があるのを確認したら、
次は以下のコマンドを入力します。
$ tail -f php_error.log
簡単に説明すると、コマンドをtail[-f][パス名]という3つに分解できて
tail:指定したファイルの末尾10行を表示
-f:元々オープンしていたファイルを引き続きtailする命令
パス名:一旦ファイル名だと思っていて良いです。
という感じになります。
最終行を確認するとどのようなエラーが、どのファイルの何行目で起きているのかを記載してくれています。
自分は以下のように書き出されていました
PHP Fatal error: Uncaught Error: Call to undefined function shal() in /Applications/MAMP/htdocs/todolist/check.php:15
/Applications/MAMP/htdocs/todolist/ にある、
check.php というファイルの15行目の、
shal() というファンクションが定義されてない。
とのことです。英語が読めれば(翻訳アプリを使ったら)なんとなくわかるかと思います。
本当はsha1()を使いたかったのに、shal()と記載してしまっていた。
1とlを見間違って入力していたみたいです。恥ずかしいミスですね。
派生して、
sha1()などはハッシュ関数と言います。
よく使われるハッシュ関数らしいのですが、PHPの公式リファレンスを見るとあまり推奨していないらしいです。
その辺りは追ってまとめたいと思います。
まとめ
最初はエラー多発すると思うのですが、もしエラーが出ても
書き出されているエラーを出力して、原因見つけに行けたら
特に慌てることなく対処できそうです。
原因を見つけにいく手段を学べる良い機会でした!