Code Fix

初級

セミコロン忘れのParse errorの原因と直し方

文の末尾にセミコロンを付け忘れたときに出る構文エラーです。PHPは次の行のトークンを見てから、初めて構文が崩れていることに気づきます。

エラーメッセージの読み方

Parse error: syntax error, unexpected token "echo" in main.php on line 3
main.php
ファイル名
3
行番号 — PHPが構文解析を諦めた位置
Parse error
エラー種別 — 実行前の構文チェックで検出されました
syntax error, unexpected token "echo"
内容 — 期待していたもの、または受け付けられなかったもの

このエラーが出る典型パターン

パターン1

 1  <?php
 2  $x = 5 
          ^
 3  echo $x;
Parse error: syntax error, unexpected token "echo" in main.php on line 3

$xへの代入文の末尾にセミコロンがありません。PHPは次の行のechoに出会って初めて構文が崩れていることに気づきます。

直し方: (空) を ; にします。

この問題を解いてみる →

広告
広告スロット(未設定)

パターン2

 1  <?php
 2  $price = 100 
                ^
 3  $tax = $price * 0.1;
 4  echo $tax;
Parse error: syntax error, unexpected variable "$tax" in main.php on line 3

$priceへの代入の末尾にセミコロンがありません。次の行の$taxという変数トークンに出会った時点で構文エラーになります。

直し方: (空) を ; にします。

この問題を解いてみる →

パターン3

 1  <?php
 2  $name = "Al" 
                ^
 3  echo $name;
Parse error: syntax error, unexpected token "echo" in main.php on line 3

文字列の代入でも同じです。セミコロンが無いと次の文と地続きに読まれてしまいます。

直し方: (空) を ; にします。

この問題を解いてみる →

パターン4

 1  <?php
 2  $age = 25 
             ^
 3  echo $age;
Parse error: syntax error, unexpected token "echo" in main.php on line 3

$ageへの代入の末尾にセミコロンがありません。次のechoに出会って初めて構文が崩れていることに気づきます。

直し方: (空) を ; にします。

この問題を解いてみる →

パターン5

 1  <?php
 2  $width = 10 
               ^
 3  $height = 20;
 4  echo $width * $height;
Parse error: syntax error, unexpected variable "$height" in main.php on line 3

$widthへの代入の末尾にセミコロンがないため、次の行の$heightという変数トークンに出会った時点で構文エラーになります。

直し方: (空) を ; にします。

この問題を解いてみる →

よくある誤解

エラーが指す行を直しても直らないことがあります。実際にセミコロンが足りないのは1行前で、PHPは次のトークン(echoなど)に出会うまで検出できません。

実務での勘所

PHPはもともとHTMLに埋め込んで使うことを前提にした言語です。<?php ... ?>のタグの中でセミコロンを忘れると、パーサーが次に手がかりとして拾うトークンが、後続のPHPコードではなく?>タグそのものや、その外側のHTML文字列になることがあります。テンプレートのようにPHPとHTMLが混在するファイルでは、エラー行がHTML部分を指しているように見えても、実際の原因はその前のPHPブロックのセミコロン忘れであることが多いです。

演習をはじめる

関連するエラー

広告
広告スロット(未設定)