PHPの基本的なエラーとデバッグ方法をやさしく解説!初心者でも安心の入門ガイド
生徒
「PHPを勉強し始めたんですが、画面が真っ白になったり、変なエラーが出たりして困ってます…」
先生
「それはPHPでよくあるエラーですね。基本的なエラーの種類や、エラーを見つけるためのデバッグ方法を覚えると安心ですよ。」
生徒
「初心者でもわかるように教えてもらえますか?」
先生
「もちろん!パソコンに不慣れでも理解できるように、やさしく説明していきますね。」
1. PHPでよくある基本的なエラーとは?
PHP(ピーエイチピー)は、ホームページ作成やアプリ開発で広く使われている言語ですが、初心者のうちはちょっとした書き間違いでエラーが出ることが多いです。まずは「どんなエラーがよく起きるのか」を知ることで、原因に素早く気づけるようになります。
- 文法エラー:書き方(文法)が間違っているときに出るエラー
- 変数エラー:まだ作っていない変数を使おうとしたときのエラー
- 関数エラー:存在しない関数を呼び出したり、使い方を間違えたときのエラー
PHPでは、命令の最後に必ず「;(セミコロン)」を付ける必要があります。ほんの少しのミスでも動かなくなるため、初心者が最初につまずきやすいポイントです。
簡単なエラー例(セミコロン忘れ)
<?php
echo "こんにちは" // ← セミコロンが抜けている!
?>
このような書き方をすると、PHPはどこが終わりなのか判断できず、次のようなエラーが表示されます。
Parse error: syntax error, unexpected '?>' in /path/to/file.php on line 3
エラーメッセージは難しそうに見えますが、ほとんどの場合「文法ミスがあるよ」というヒントをくれています。まずは落ち着いて、どこか書き漏れがないかを確認してみましょう。
2. 実際のエラー例を見てみよう
ここからは、PHPで実際によく見かけるエラーを具体的なコードとエラーメッセージで確認していきます。「なんとなく難しそう…」と感じるかもしれませんが、例を見ながら少しずつ慣れていけば大丈夫です。
例1:セミコロンのつけ忘れによる文法エラー
まずは、もっともありがちな「セミコロンのつけ忘れ」のエラーです。次のようなコードを書いたとします。
<?php
echo "こんにちは"
?>
このコードは、一見ちゃんと動きそうに見えますが、echoの行の最後にセミコロン(;)がないためエラーになります。実行すると、次のようなエラーメッセージが表示されます。
Parse error: syntax error, unexpected '?>' in /path/to/file.php on line 3
このメッセージの中で大事なのは、Parse error(文法エラー)という種類と、line 3(3行目付近に問題がある)という情報です。実際には2行目のセミコロン忘れが原因ですが、「このあたりに書き方のミスがあるんだな」と目星を付けることができます。
例2:変数名の間違いによる「Undefined variable」
次によくあるのが、「変数を用意していないのに使ってしまう」ケースです。次のサンプルを見てみましょう。
<?php
$message = "PHPのエラーはこわくないよ!";
echo $mesage; // 変数名を間違えている($message ではなく $mesage と書いている)
?>
このコードを実行すると、次のようなエラーが出ます。
Notice: Undefined variable: mesage in /path/to/file.php on line 4
Undefined variable は「定義されていない変数ですよ」という意味です。今回のようにスペルミスが原因のことが多いので、エラーに出ている変数名と、自分が書いた変数名を落ち着いて見比べるのがポイントです。
例3:存在しない関数を呼び出した場合のエラー
最後に、まだ用意していない関数を呼び出してしまった例です。
<?php
// hello() という関数はどこにも定義していない
hello();
?>
この場合は、次のようなエラーが表示されます。
Fatal error: Uncaught Error: Call to undefined function hello() in /path/to/file.php on line 3
Call to undefined function と書かれているときは、「その名前の関数は存在しません」という意味です。タイピングミスで関数名を打ち間違えているか、そもそも関数を定義し忘れていないかを確認しましょう。
このように、PHPのエラーは一見難しそうでも、よく読むと「どの行で」「何が原因で」止まっているのかのヒントが必ず書かれています。最初は戸惑っても、実際のエラー例を何度か見ていくうちに、少しずつ読み方に慣れていきます。
3. エラーが表示されない場合の対処法(画面が真っ白…)
初心者の方が一番「何が起きているのかわからない…」と困ってしまうのが、何も表示されず画面が真っ白になるパターンです。これは、PHP自体はエラーを出しているものの、エラーメッセージを画面に表示しない設定になっていることが多いです。その結果、実際にはエラーで止まっているのに、ブラウザ上では何も表示されず、原因がまったく見えなくなってしまいます。
一時的にエラーを画面に表示する設定を追加する
まずは「どんなエラーが出ているのか」を知ることが大切です。開発中のファイルの先頭に、次のようなコードを追加してみましょう。
<?php
// エラーを画面に表示する設定
ini_set('display_errors', 1);
// すべての種類のエラーを対象にする設定
error_reporting(E_ALL);
?>
ini_set('display_errors', 1); は「エラーを画面に出してね」という指示、error_reporting(E_ALL); は「小さな注意(Notice)も含めて、あらゆるエラーを対象にしてね」という指示だと思ってください。これらをPHPファイルの一番上に書くことで、今までは真っ白だった画面にエラーメッセージが表示されるようになります。
実際にエラーを出してみて表示を確認する
きちんとエラーが表示されるか確認するために、あえて簡単なミスをしてみるのもおすすめです。例えば、次のようなコードを書いてみます。
<?php
ini_set('display_errors', 1);
error_reporting(E_ALL);
echo "PHPのエラー確認テスト" // ← セミコロンをわざと抜いている
?>
このファイルをブラウザで表示すると、真っ白な画面の代わりに、Parse error や syntax error といった文法エラーのメッセージが表示されるはずです。「どの行のどのあたりで問題が起きているか」が分かるようになるので、原因を探しやすくなります。
設定を書く場所についての簡単な補足
上で紹介したように、ini_set と error_reporting を直接ファイルの先頭に書く方法は、「今作業しているファイルだけ一時的にエラーを表示したい」というときに便利です。レンタルサーバーや共有サーバーの場合、全体の設定ファイル(php.ini)を変更できないことも多いので、このやり方を覚えておくと安心です。
本番環境ではエラーを画面に出さないように注意
ただし、実際に公開するホームページ(本番環境)では、エラーをそのまま画面に表示するのは危険です。エラーメッセージの中にはファイルのパスやプログラムの中身など、外部の人に見せたくない情報が含まれていることがあるからです。開発中はエラー表示をオンにして原因を追いかけ、公開するときには表示をオフにしてログにだけ記録する、という使い分けを意識しておくと、PHPのエラーと安全に付き合っていけます。
4. デバッグってなに?初心者向けにわかりやすく解説
「デバッグ」とは、「バグ(間違い)」を見つけて直す作業のことです。車で言えば、エンジンが動かないときにボンネットを開けて原因を探すようなものです。
PHPでは、次のような方法でデバッグします:
- エラーメッセージを読む
- 表示される内容をこまめに確認する
var_dump()やprint_r()を使って変数の中身を確認する
たとえば、次のように変数の中身を確認できます。
<?php
$fruit = "りんご";
var_dump($fruit);
?>
string(9) "りんご"
5. PHPのエラーを見逃さない!ログの確認方法
サーバー(ホームページを置いている場所)によっては、エラーをログファイルという記録に書き込むことがあります。
そのログを見ることで、画面に出てこないエラーも確認できます。ログの場所はサーバーによって違いますが、たとえば:
/var/log/apache2/error.log/var/log/httpd/error_log
初心者の方は、レンタルサーバーを使っている場合「コントロールパネル」からログを見る機能が用意されていることが多いので、そちらを使ってみましょう。
6. よくあるエラーの原因と解決法まとめ
最後に、初心者がよくつまずくポイントとその対処法を一覧で紹介します。
| エラーの内容 | 原因 | 対処法 |
|---|---|---|
| Parse error | 文法ミス(セミコロン抜けなど) | コードをよく見直す |
| Undefined variable | 変数を作る前に使っている | 変数の定義を確認する |
| Call to undefined function | 存在しない関数を呼び出している | 関数名を確認する |
| 画面が真っ白 | エラー非表示の設定 | ini_setとerror_reportingを使う |
まとめ
PHPを学び始めたばかりの初心者でもつまずきやすいのが、文法の書き方をわずかに間違えただけで発生する文法エラーや、変数や関数が使われるより前に呼び出されてしまったときに出る典型的なエラーです。特に、セミコロンの抜けやスペルミスといった小さなミスが原因で画面が真っ白になってしまうことは非常に多く、最初の頃はそのたびに不安になってしまうものです。ただ、基本的なエラーの仕組みやデバッグの手順さえ知っていれば、慌てずに落ち着いて修正できるようになります。とくに、エラーメッセージを正しく読み取る習慣は初心者にとって大切な力であり、間違いの位置や原因を丁寧に読み解くことで、どんなエラーなのかが自然と理解できるようになります。
また、PHPではエラーメッセージが表示されない設定になっているサーバー環境も多く、その場合は画面が真っ白になり何が起きているのか分からないまま作業が止まってしまいがちです。そこで、ini_set や error_reporting を使ってエラーをきちんと表示させる設定をしておくことが非常に重要です。これらを最初に書いておくだけで、エラーの内容をすぐに確認でき、効率よく修正が進められるようになります。
一方、デバッグ作業では、少しずつ確認しながら進めることが大切です。プログラムがどこまで動いているのかを把握したり、変数の中身が正しく入っているかを確かめるために var_dump() や print_r() を活用することはとても有効です。値を目で確認しながら作業すると、誤りの箇所がはっきりと見えてきます。これは今後のプログラミング学習でも役立つ基本的な技術となるため、習慣として身につけておくと安心です。
さらに、画面に出ないエラーを見逃さないためには、ログファイルを確認する習慣も重要になります。サーバーや開発環境によってログの場所は異なりますが、記録されたログには画面に表示されないエラーも残されているため、デバッグの大きな助けになります。特に複雑なエラーや、環境依存で起きるトラブルに遭遇した際には、ログを確認することで原因を明確にしやすくなります。
このように、PHPのエラーやデバッグ方法を正しく理解すると、プログラムが思い通りに動かない原因を冷静に把握できるようになります。最初は時間がかかったとしても、何度も繰り返しエラーを経験しながら理解を深めていくことで、自然とエラーへの耐性が身につき、安心してコーディングできるようになります。今回の内容を通して、エラーの読み方やデバッグの進め方に少しでも自信がついたなら嬉しいです。焦らず落ち着いて、ひとつひとつ解決していけば、必ず理解は深まります。
サンプルコードでもう一度おさらい
基本的なエラーを防ぐために、次のようなコードで正しい書き方を確認しておきましょう。
// セミコロンを忘れずに!
<?php
$message = "エラーを防ぐための基本を理解しよう";
echo $message;
?>
また、エラーメッセージを必ず表示させておくために、次の設定も冒頭に記述しておくと安心です。
<?php
ini_set('display_errors', 1);
error_reporting(E_ALL);
?>
生徒
「先生、今日の内容でエラーの見方が少しわかってきた気がします。前は画面が真っ白になるだけで焦っていました…」
先生
「最初はみんなそうだよ。大事なのは、エラーメッセージを読むことと、落ち着いて順番に確認すること。今回の方法を使えば、だいぶ楽になるはずです。」
生徒
「確かに、var_dump() を使ってみたら変数の中身がすぐにわかったのでびっくりしました。こんな便利な方法があったんですね!」
先生
「その調子!ログを見る習慣もつければ、もっとスムーズに直せるようになるよ。少しずつ慣れていけば確実に上達するから、これからも一緒に進めていこうね。」