セミコロン忘れの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
文字列の代入でも同じです。セミコロンが無いと次の文と地続きに読まれてしまいます。
直し方: (空) を ; にします。
よくある誤解
エラーが指す行を直しても直らないことがあります。実際にセミコロンが足りないのは1行前で、PHPは次のトークン(echoなど)に出会うまで検出できません。
まとめ
セミコロン忘れのParse errorの原因と直し方は初級でつまずきやすい項目です。上の3パターンを実際に手で直すと、エラーメッセージのどこを読めばよいかが掴めます。