PHPのエラー対処法!初心者がつまずく文法エラー(Parse error)の読み方と修正方法

PHPプログラミングを学び始めると、避けては通れないのがエラーメッセージとの遭遇です。画面に表示される赤い文字に、戸惑ったり、やる気をなくしてしまったりするかもしれません。

しかし、エラーメッセージは決してあなたの敵ではありません。むしろ、「コードのこの部分が、文法的に間違っていますよ」と教えてくれる、PHPからの親切なヒントなのです。

この記事では、初心者が最も遭遇しやすい「Parse error (文法エラー)」に焦点を当て、具体的なエラー例を3つのケーススタディを通して、その読み解き方と修正方法を解説します。エラーを恐れず、デバッグ力を身につける第一歩を踏み出しましょう。


目次

PHPエラーの主な種類

PHPのエラーにはいくつか種類がありますが、まずは以下の4つを頭の片隅に入れておくと良いでしょう。

  • Parse error (Syntax error): 文法エラー。PHPの文法ルールに反しているため、プログラムを実行すらできない状態。今回のメイントピックです。
  • Notice: 軽微なエラー。「未定義の変数を使っていますよ」など、実行は継続されるが、潜在的なバグの可能性があるという通知。
  • Warning: Noticeより重要度が高いエラー。「存在しないファイルを読み込もうとしました」など、実行は継続されるが、意図しない結果になる可能性が高い警告。
  • Fatal error: 致命的なエラー。「定義されていない関数を呼び出しました」など、プログラムの実行が完全に停止してしまうエラー。

ケーススタディで学ぶエラー修正

ケース1: セミコロンのつけ忘れ

一文の終わりを示すセミコロン;は、PHPにおいて非常に忘れやすい要素の一つです。

【エラーが発生するコード】

<?php
$word1 = "こんにちは" // ← ここにセミコロンがない!
$word2 = "世界";

echo $word1 . $word2;

【表示されるエラーメッセージ】 Parse error: syntax error, unexpected '$word2' (T_VARIABLE) in /path/to/your/file.php on line 3

【エラーの読み解き方】

  1. on line 3: 「3行目がおかしい」とPHPは教えてくれています。
  2. unexpected '$word2': 「予期しない$word2が出てきました」と言っています。PHPは$word1の行が終わるはずの場所に$word2が出てきたため、混乱しています。
  3. 思考プロセス: 「3行目がおかしいと言っているが、3行目自体は$word2 = "世界";で正しそうだ。Parse errorの場合、問題は指摘された行の直前にあることが多い。そうだ、2行目の末尾にセミコロン;が抜けている!」

【修正後のコード】

<?php
$word1 = "こんにちは"; // ← セミコロンを追加
$word2 = "世界";

echo $word1 . $word2;

ケース2: PHPとHTMLの不正な混在

PHPのコードブロック<?php ... ?>の中に、直接HTMLタグを記述することはできません。

【エラーが発生するコード】

<?php
$array = ["犬", "猫", "鳥"];
foreach ($array as $var) {
    echo $var . "<br>";
}
<h1>動物リスト</h1> // ← PHPコードブロックの中にHTMLが!
?>

【表示されるエラーメッセージ】 Parse error: syntax error, unexpected '<' in /path/to/your/file.php on line 6

【エラーの読み解き方】

  1. on line 6: 「6行目がおかしい」と指摘されています。
  2. unexpected '<': 「予期しない<が出てきました」と言っています。PHPは}の後もPHPコードが続くと考えていたのに、突然HTMLの開始タグ<が現れたため、文法違反だと判断しました。
  3. 思考プロセス: 「PHPはHTMLを直接解釈できない。HTMLを出力したいなら、一度PHPモードを閉じるか、echoで文字列として出力する必要がある。」

【修正後のコード】

<?php
$array = ["犬", "猫", "鳥"];
foreach ($array as $var) {
    echo $var . "<br>";
}
?> // ← いったんPHPを閉じる
<h1>動物リスト</h1>

ケース3: 括弧の閉じ忘れ・位置間違い

関数の引数などを囲む括弧()の対応が取れていない、または位置が間違っているケースも頻発します。

【エラーが発生するコード】

<?php
$array = ["犬", "猫", "鳥"];
foreach ($array as $var) {
    // mb_strpos()の括弧を閉じる位置が間違っている
    if (mb_strpos($var, "鳥" !== false)) {
        echo $var . "は鳥類です。";
    }
}

【表示されるエラーメッセージ】 Parse error: syntax error, unexpected token ")" in /path/to/your/file.php on line 4 (エラーメッセージは環境によって多少変わることがあります)

【エラーの読み解き方】

  1. unexpected token ")": 「予期しない)が出てきました」という指摘。
  2. 思考プロセス: エラーが出た行の括弧の対応を注意深く見直します。「mb_strpos関数は、($var, "鳥")で引数が終わるはず。その結果とfalseを比較したいのだから、括弧はmb_strpos($var, "鳥")の直後で閉じるべきだ。」

【修正後のコード】

<?php
$array = ["犬", "猫", "鳥"];
foreach ($array as $var) {
    // mb_strpos()の後に !== false を評価するように修正
    if (mb_strpos($var, "鳥") !== false) {
        echo $var . "は鳥類です。";
    }
}

エラーを防ぐためのヒント

  • 高機能なエディタを使う: VSCodeなどのエディタは、文法ミスがあるとリアルタイムで色を変えて教えてくれます(シンタックスハイライト)。括弧の対応なども視覚的に分かりやすく、多くのエラーを未然に防げます。
  • こまめに実行する: 一度にたくさんのコードを書かず、少し書いたら保存してブラウザで確認、というサイクルを繰り返すことで、エラーの原因箇所を特定しやすくなります。

まとめ

エラーメッセージは、プログラミング学習における最高の教師の一人です。

【エラー対処の心構え】

  1. 慌てない: エラーは出て当たり前。
  2. メッセージを読む: 「何が」「何行目で」問題なのかを読み取る。
  3. 原因を推測する: 指摘された行とその直前の行を重点的に見直す。

このプロセスを繰り返すうちに、エラーメッセージを見ただけで、すぐさま原因が推測できるようになります。デバッグ作業を楽しみながら、着実にスキルアップしていきましょう。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

私が勉強したこと、実践したこと、してることを書いているブログです。
主に資産運用について書いていたのですが、
最近はプログラミングに興味があるので、今はそればっかりです。

目次