Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
0
Help us understand the problem. What is going on with this article?
@uni_uniq

【PHP超初心者用】エラーは敵じゃなくて味方だよ

More than 1 year has passed since last update.

書くことになった経緯

誰しも初心者の頃ってエラーが出たりでバグらせたりすると、意味わかんねーよって投げ出したりすることもあったと思うんですよね。意味不明な英語だけの羅列が出ると焦ってやめたくなる気持ちも本当に分かります。

でも実はその意味不明な英語の羅列って、どこどこが間違ってるよって教えてくれたりしてくれてるんですよね。(もちろん意味不明なことを言ってることもありますが。笑)

そこで今回はどのようにエラーが書かれているかを見ることで、「こいつ実はいいやつだったんじゃね」っていう感覚を味わってほしいなと思っています。

エラーってどんなのがあるの

エラーにもいろんな種類があるのですが、その一例は以下のようなものです。
Fatal error: Uncaught Error: Call to undefined function hell() in /public_html/fatal_error.php on line 6

今回はこのエラーを詳しく見ていきます。
では順番に見ていきましょう。

Fatal error: Uncaught Error:

まずはエラーのこの部分です。
Fatal error: Uncaught Error: Call to undefined function hell() in /public_html/fatal_error.php on line 6

ここではエラーの種類が記述されています。
Fatal errorは日本語にすると「致命的なエラー」、Uncaught Errorは「捕らえられなかったエラー」となります。
この種類によっては実行が途中で停止したり、そもそも最初から動かなかったりというのが決まっています。

今回出てきたエラーは致命的なエラーですので、完全に処理がとまってしまいます。
他にもParse error(構文エラー)やWarning(警告)などの種類がありますね。

Uncaught Errorについては初心者の方には少し分かりづらいかもしれませんが、プログラマーはエラーに対して「キャッチ(捕捉)する」という表現をよく使います。try-catchなどを理解すれば感覚は分かると思うのですが、今回はそういう表現をするんだくらいで大丈夫です。

Call to undefined function hell()

次はこの部分です。
Fatal error: Uncaught Error: Call to undefined function hell() in /public_html/fatal_error.php on line 6

ここにはエラーの原因であるだろうことが書かれています。
今回の部分を訳すと、「定義されていないhell()という関数が呼ばれているよ」になります。

このように原因を真についた分かりやすいことを言ってくれることもありますが、まったく違うことを言ってくることもあります。
例えば、;を最後に忘れちゃったときは間違いの次の行が間違ってるよと言われます。

in /public_html/fatal_error.php on line 6

いよいよ最後です。
Fatal error: Uncaught Error: Call to undefined function hell() in /public_html/fatal_error.php on line 6

ここでは、エラーの場所を教えてくれています。
今回で言うと、fatal_error.phpというファイルの6行目が間違ってるよ、といった感じです。

そのファイルがどこにあるのかを教えてくれているのが/public_html/の部分です。

文字だけでファイル構造を表現する場合、hogeファイルの中にあるhoge.txtをhoge/hoge.txtと表します。

なので、今回で言うとpublic_htmlの中にあるfatal_error.phpという意味です。

まとめ

ここまでをまとめると、エラー文はこのように分解できます。

[エラーの種類]:[エラーの原因]in[エラーの場所]

こう見ると実は結構単純で簡単なんだと分かると思います。
これで少しはエラーに対して恐怖心がなくなったのではないでしょうか。

さらにエラーの詳しい種類や解決方法を知りたい方は以下の記事をご覧ください。
【実例で見る】PHPのエラーの種類と解決方法

0
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
uni_uniq
データサイエンス専攻の地方大学院生

Comments

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
0
Help us understand the problem. What is going on with this article?