【PHP8対応】Parse error: syntax error, unexpectedエラーの原因と今すぐできる解決方法

WordPress

はじめに:この記事で解決できること

この記事を見ている方はWordPressやPHPで、突然以下のようなエラーが表示されて困っていると思います。

Parse error: syntax error, unexpected 'echo' (T_ECHO) in /home/user/test.php on line 3

この「Parse error: syntax error, unexpected ○○」というエラーは、PHPの構文に誤りがある場合に表示される非常に基本的なエラーです。

  • どこが間違っているのか分からない
  • なぜ“unexpected”なのか意味不明
  • 行番号を直しても直らない…!

という方向けに解説していきます。

この記事でわかること
  • 「Parse error: syntax error, unexpected」とは何か?
  • エラーが発生するよくある原因パターン
  • エラーメッセージの読み解き方と行番号の見方
  • セミコロン・括弧・クォーテーションなどの文法チェックポイント
  • PHP8以降でエラーが出やすくなった理由
  • エラーを未然に防ぐためのコーディング習慣や便利ツール

読み終えると「unexpectedエラーで詰まることが減り、冷静に原因を特定して修正できる」ようになっているはずです。
それではさっそく、エラーの正体から確認していきましょう。

Parse error: syntax error, unexpectedとは

「Parse error: syntax error, unexpected ○○」は、PHPがコードを解析(パース)している段階で、予期しない記述(unexpected)に出会ったことを示す構文エラー(syntax error)です。

このエラーは、以下のような構成で表示されます。

Parse error: syntax error, unexpected 'echo' (T_ECHO) in /home/user/test.php on line 3
表示内容意味
Parse error解析エラー(コード構造の問題)
syntax error文法エラー(ルール違反)
unexpected 'echo'想定外の echo が現れた
(T_ECHO)echo はトークン T_ECHO に該当
in ... on line 3エラーが起きたとされるのは3行目

このエラーが出るということは、PHPがそのコードの意味を正しく理解できなかったということです。

構文エラーの主な原因
  • セミコロン(;)の付け忘れ
  • カッコや波括弧((), {})の閉じ忘れ
  • クォーテーション("')の閉じ忘れ
  • 不適切な文字列や構文(例:変数の前に $ がない、演算子の誤用)
  • 予約語の誤使用(例:関数名に echoclass を使ってしまう)

特にPHP 8以降は文法チェックがより厳格になっており、以前は黙認されていた曖昧な記述でもエラーが出るようになっています。
続いて、具体的なコード例を挙げながら「unexpectedエラー」が起こる原因を詳しく解説します。

エラーが表示される具体例:原因と解決方法

Parse error: syntax error, unexpected エラーは、PHPの構文に誤りがあるときに表示されます。
以下によくある具体例を挙げて、それぞれなぜエラーになるのかを解説します。

具体例1:セミコロンの付け忘れ

echo "こんにちは"
echo "世界";
エラー内容

Parse error: syntax error, unexpected ‘echo’ (T_ECHO)

原因

1行目の echo "こんにちは" にセミコロン(;)が付いていないため、次の echo 文が文法的に不正とみなされてしまいます。

解決方法

1行目にセミコロンを付ける。

echo "こんにちは";
echo "世界";

具体例2:カッコや波括弧の閉じ忘れ

if ($x > 0) {
    echo "正の数です";
エラー内容

Parse error: syntax error, unexpected end of file

原因

if 文のブロック {} を閉じていないため、PHPがコードの終わりを予期しない場所で迎えてしまいます。

解決方法

}(閉じカッコ)を追加する。

if ($x > 0) {
    echo "正の数です";
}

具体例3:クォーテーションの閉じ忘れ

echo "こんにちは;
エラー内容

Parse error: syntax error, unexpected ‘;’

原因

ダブルクォーテーション " が閉じられていないため、PHPが次のセミコロン ; を不正とみなします。

解決方法

" (ダブルクォーテーション)を追加する。

echo "こんにちは";

具体例4:予約語や構文の誤使用

function class() {
    echo "これは関数です";
}
エラー内容

Parse error: syntax error, unexpected ‘class’ (T_CLASS)

原因

class はPHPの予約語であり、関数名や変数名に使用できません。

解決方法

予約語以外の関数名を設定する。

function myClass() {
    echo "これは関数です";
}

具体例5:変数の $ を忘れた

name = "太郎";
echo name;
エラー内容

Parse error: syntax error, unexpected ‘name’ (T_STRING)

原因

PHPでは変数名の前に $ をつける必要があります。
$name とすべきところを name にしてしまうと、構文エラーになります。

解決方法

変数名には$を付ける。

$name = "太郎";
echo $name;

具体例6:演算子の誤用や不要なカンマ

$total = 100 + ;
エラー内容

Parse error: syntax error, unexpected ‘;’

原因

演算子 + の後に値が無いため、PHPが構文として成立しないと判断されます。

解決方法

演算子の後に値を入れる。

$total = 100 + 0;

このように、「unexpected ○○」エラーは、PHPが「こんな場所にこんな記述が来るのはおかしい」と判断したポイントで発生します。
「エラーが出たときのチェックポイントと便利な対処手順」について解説します。
開発現場で役立つヒントをまとめてご紹介します。

エラーが出たときのチェックポイントと便利な対処手順

Parse error: syntax error, unexpected が出たとき、焦らず以下のポイントを順に確認していくことで、原因を素早く特定・修正できます。

1.エラーメッセージの内容と行番号を確認する

まずは、表示されたエラーメッセージをしっかり確認します。たとえば以下のようなメッセージの場合・・・

Parse error: syntax error, unexpected '}' in /home/user/public_html/index.php on line 42
ポイント
  • unexpected ‘}’:閉じ括弧が予期しない位置にある
  • on line 42:42行目にエラーがある

実際の原因がエラーメッセージの行より前の行にあることが多いです。直前数行を重点的に見直しましょう。

2.コードエディタの構文ハイライトを活用する

VS CodeやPhpStormなど、構文ハイライトに対応したエディタを使うことで、カッコの不一致やクォーテーションのミスを視覚的に確認できます。
色が不自然な場合は構文エラーの可能性が高いです。

3.エラーメッセージの「unexpected X」は何を意味するか考える

エラーに登場する unexpected の後ろの単語がヒントになります。たとえば…

  • unexpected 'endif' → if文に対応する始まりがない
  • unexpected T_VARIABLE → 変数の前に不要な文字があるか、代入ミス
  • unexpected ',' → カンマの誤用(配列の最後の余分なカンマなど)

4.1行ずつコメントアウトしながら原因箇所を特定

どうしても原因が分からない場合は、該当ファイルのコードを1行ずつ // でコメントアウトしていき、エラーが消える箇所を探すと特定しやすくなります。

// echo "ここはOK";
echo "ここでエラー"; // ← ここが原因の可能性

5.LintツールやPHPバージョンの確認も有効

以下のようなPHPの構文チェック(lint)ツールを使うと、正確にエラー箇所が特定できます。

php -l ファイル名.php

また、PHPのバージョンによっては使えない構文がある場合もあるため、php -v で使用中のバージョンを確認しておきましょう。

6.コードのコピー&ペーストによる文字化けや全角文字もチェック

  • 全角スペース
  • 全角のクォーテーション「”」や「’」
  • コピー時に混入した不可視文字

これらも構文エラーの原因になります。
特にWordやGoogleドキュメントなどからの貼り付けには注意しましょう。

まとめ:unexpectedエラーを見落とさないために

「Parse error: syntax error, unexpected」エラーは、PHPの構文ミスが原因で発生するもっとも基本的なエラーのひとつです。
特にPHP8以降では、構文チェックがより厳密になったため、これまで動いていたコードが突然エラーになることも少なくありません。

本記事で紹介したポイントのおさらい
  • unexpectedエラーとは:「想定外の記号や構文が出現した」ことを意味し、PHPがコードの解釈に失敗したときに表示される
  • 原因はさまざま:セミコロンの付け忘れ、括弧やクォーテーションの閉じ忘れ、文法の順序ミスなど
  • エラーのメッセージを読み解くことで修正のヒントが得られる
  • PHP8以降では、より厳格に構文エラーが検出されるため注意が必要
  • エディタやIDEの構文チェック機能を活用することで、事前にエラーを発見できる

このエラーは「初心者向けのミス」と思われがちですが、経験者でもうっかり見落としやすいポイントが多いため、定期的に見直す癖をつけましょう。

エラーの内容を冷静に読み解き、対処すべき行や直前の構文を丁寧に確認することで、早期に問題解決できるはずです。

この記事を書いた人
管理人

2012年にWebデザインの勉強を始め、2013年より制作会社に勤務。
これまでに500件以上のWebサイト制作・運用に携わってきました。
現在も制作会社に勤務しながら、Webデザインスクールのトレーナーとしても後進の育成に取り組んでいます。
WordPressやデザインの実践的なノウハウを、初心者にもわかりやすく発信できるよう試行錯誤しています。

管理人をフォローする
WordPress
管理人をフォローする

コメント

タイトルとURLをコピーしました