Code Fix

初級

波括弧 } の閉じ忘れによる 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パターンを実際に手で直すと、エラーメッセージのどこを読めばよいかが掴めます。

演習をはじめる

関連するエラー

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