Code Fix

初級

文字列の閉じクォート忘れによる Parse error

文字列を囲むクォートの片方を書き忘れると、それ以降のコードすべてが文字列の中身として読み込まれ、ファイルの終わりまで閉じクォートが見つからずエラーになります。

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

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

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

パターン1

 1  <?php
 2  $s = "hello  
                ^
 3  echo $s;
Parse error: syntax error, unexpected end of file in main.php on line 3

文字列を閉じるダブルクォートがありません。以降のコード全体が文字列の中身として読み込まれ、ファイルの終わりまで閉じクォートが見つからずエラーになります。

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

この問題を解いてみる →

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

パターン2

 1  <?php
 2  $msg = "world  
                  ^
 3  echo $msg;
Parse error: syntax error, unexpected end of file in main.php on line 3

msgも同様です。閉じクォートが無いと、echo以降の行もすべて文字列の一部として飲み込まれます。

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

この問題を解いてみる →

パターン3

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

エラーはファイル末尾を指しますが、直す場所は文字列が開始した行です。

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

この問題を解いてみる →

パターン4

 1  <?php
 2  $msg = "bye  
                ^
 3  echo $msg;
Parse error: syntax error, unexpected end of file in main.php on line 3

文字列を閉じるダブルクォートがないため、ファイル末尾まで文字列として読み込まれエラーになります。

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

この問題を解いてみる →

パターン5

 1  <?php
 2  $label = "ok  
                 ^
 3  echo $label;
Parse error: syntax error, unexpected end of file in main.php on line 3

labelも同様です。閉じクォートが無いと以降の行もすべて文字列の一部として飲み込まれます。

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

この問題を解いてみる →

よくある誤解

エラーがファイル末尾の行を指すからといって、そこにクォートを足しても直りません。本当に直すべきは、文字列が始まった行の閉じクォートです。

実務での勘所

長い文字列や、大量のHTMLをそのまま変数に埋め込みたい場合、PHPにはヒアドキュメント(<<<EOT ... EOT;)という書き方があります。この構文は開始と終了を示す独自のラベルで囲むため、途中にシングルクォートやダブルクォートが大量に含まれていても、クォートの閉じ忘れを心配せずに済みます。長大な文字列を扱う場面では、通常のクォートよりヒアドキュメントのほうが安全な選択肢になります。

演習をはじめる

関連するエラー

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