WEB業界で働く人や興味がある人に役立つ情報サイト“qam(カム)”

JQ

2020/12/17

【初心者向け】PHPでよく見られるエラーとその種類を解説!【対処法あり】

投稿者: JQ
カテゴリー: プログラム >PHP

PHPでよく見られるエラーとその種類

PHPを勉強していると、実行した時にエラーが表示されることが初心者の頃はよくあります。

ですが、すべて英語で書かれているので、どんな問題があるのか、何が間違っているのかがわからないことがあります

今回は、初心者の方がよく遭遇するであろうエラーを取り上げて、内容の解説をしていきます。

エラーは大きく分けて4種類

PHPのエラーは大きく分けて4つあります。

  • Fatal error
  • Parse error
  • Warning
  • Notice

それぞれについて解説していきます。

Fatal error(致命的なエラー)

PHPのエラーの分類の中で一番重いのが、この「Fatal error」です。
日本語では「致命的なエラー」と訳されます。
このエラーが表示されている場合は、PHPはその段階で処理を中断します。

<?php

say_hallo();

function say_hello() {
    echo 'hello!';
}

?>

こちらのプログラムを実行すると、下記のようなエラーが表示されます。

Fatal error:  Uncaught Error: Call to undefined function say_hallo() in /workspace/Main.php:3

どのような状態かというと「定義されていない関数(say_hallo)は呼び出すことが出来ません」というものです。

よく見ると、関数名は「say_hello」と定義しているにも関わらず、呼び出す側は「say_hallo();」と記述されており、helloのスペルが間違っていました。
こういった場合、PHPは致命的なエラーとして、処理を中断してしまうので、関数の呼び出しには注意が必要です。

Parse error(構文エラー)

次に初心者がハマりやすいエラーが「Parse error」です。
日本語では「構文エラー」と訳されます。
このエラーは、PHPの文法に間違いがあるときに表示されます。

<?php

echo ('hello!';)

?>

こちらのプログラムを実行すると、下記のようなエラーが表示されます。

Parse error:  syntax error, unexpected ';' in /workspace/Main.php on line 3

「セミコロン(;)が、予期しない箇所にあります」というものです。

プログラムを見てみると、行末を示す「;」が丸括弧の中にあり、正しい行末部分にはありません
こちらを直すことで、このプログラムは正常に動作するようになります。

Warning(警告)/Notice(注意)

最後に「Warning」「Notice」についてです。

これらのエラーは先述の「Fatal error」や「Parse error」に比べて軽微なものとなり、このエラーがあってもプログラムは最後まで処理を続けます
主にWarningは、ファイルの呼び出しなどで、存在しないファイルを呼び出そうとしたり、Noticeは、定義されていない変数を使用しようとした時に表示されます。

Noticeの例
<?php

if($i < 10) {
    echo('10より小さい');
} else {
    echo('10より大きい');
}

?>
実行結果
Notice:  Undefined variable: i in /workspace/Main.php on line 3

※未定義の変数$iをif構文で使用しようとしているため。

Noticeを表示させないようにする

先ほどNoticeエラーがあっても、プログラムは最後まで処理を続けるとご説明しました。
プログラムを組んでいると、Noticeエラー程度であれば、修正の処理をせず、そのままプログラムを使用したいこともあります
ただ、ページを見る人に対し、Notice:~~~~~というエラーを見せてしまうのは、あまり格好良くありません。
そこで、Noticeエラーは発生しても画面上にそのエラーを表示しないようにすることが出来ますのでその方法をご紹介します。

php.iniで定義する

php.iniというファイルを編集できる権限がある場合は、そのファイルに下記のような記述を追加します。

error_reporting = E_ALL & ~E_NOTICE

.htaccessで定義する

php.iniが編集できない場合は、.htaccessファイルでも定義できます。

php_value error_reporting 30711

対象のPHPファイルで直接定義する

上記のどちらも編集できない場合は、対象のPHPファイルに直接下記の内容を記述することで実現できます。
ファイルのphp宣言(<?php)のすぐ後に記述します。

error_reporting(E_ALL & ~E_NOTICE);

これらの方法をとることで、Noticeエラーを表示させずに、閲覧者にはページを見てもらうことができるようになります。

まとめ

今回はPHPを勉強し始めた方が遭遇しやすいエラーについて、対処法とともにまとめてみました。

PHPは便利なプログラミング言語ですが、エラーが起きたときの対処法を知っておかないと、エラーまみれになった時に勉強する気持ちが落ちてしまうこともあるので、正しい対処方法を知っておくことは大事ですね。
ぜひ参考にしてみてください。

最後までお読みいただき、ありがとうございました。

よろしければシェアしていただければ幸いです。

  • このエントリーをはてなブックマークに追加

関連記事

よろしければこちらの記事もお読みください。

WEB業界ならqam!qam(カム)はWEB業界で働く人や興味がある人に役立つ情報サイトです。
マーケティングやデザイン、マークアップ(コーディング)、プログラム、トレンドなどの情報をqamライター陣が執筆。噛めば噛むほど(読めば読むほど)制作・開発や運営・運用、業界知識やノウハウを学ぶことができます。

トップへ