波括弧 } の閉じ忘れによる Parse error: Unclosed '{'
関数やif文の波括弧を閉じ忘れると、PHPはファイルの終わりに達してから、どの行の { が対応を失っているかを教えてくれます。
エラーメッセージの読み方
Parse error: Unclosed '{' on line 2 in main.php on line 5
main.php- ファイル名
5- 行番号 — PHPが構文解析を諦めた位置
Parse error- エラー種別 — 実行前の構文チェックで検出されました
Unclosed '{' on line 2- 内容 — 期待していたもの、または受け付けられなかったもの
このエラーが出る典型パターン
パターン1
1 <?php 2 function total($a, $b) { 3 return $a + $b; 4 ^ 5 echo total(1, 2);
Parse error: Unclosed '{' on line 2 in main.php on line 5
total関数を閉じる波括弧がありません。PHPはファイルの終わりに達してから、2行目の { が対応を失っていることを教えてくれます。
直し方: (空) を } にします。
広告
広告スロット(未設定)
パターン2
1 <?php 2 if (true) { 3 echo "yes"; 4 ^ 5 echo "done";
Parse error: Unclosed '{' on line 2 in main.php on line 5
if文の波括弧も同様です。閉じ忘れると、以降のコードがすべてif文の中に取り込まれたままファイル末尾に達してしまいます。
直し方: (空) を } にします。
パターン3
1 <?php 2 function greet($name) { 3 echo "Hi " . $name; 4 ^ 5 greet("Al");
Parse error: Unclosed '{' on line 2 in main.php on line 5
greet関数の閉じ波括弧が必要です。「Unclosed '{' on line 2」の2行目こそが本当の原因の行です。
直し方: (空) を } にします。
よくある誤解
エラーメッセージには2つの行番号が出ます。「on line 6」はPHPが諦めた場所、「Unclosed '{' on line 2」が本当の原因の行です。後者を直す必要があります。
まとめ
波括弧 } の閉じ忘れによる Parse error: Unclosed '{'は初級でつまずきやすい項目です。上の3パターンを実際に手で直すと、エラーメッセージのどこを読めばよいかが掴めます。