はじめに:この記事で解決できること
この記事を見ている方はWordPressやPHPで、突然以下のようなエラーが表示されて困っていると思います。
Parse error: syntax error, unexpected 'echo' (T_ECHO) in /home/user/test.php on line 3
この「Parse error: syntax error, unexpected ○○」というエラーは、PHPの構文に誤りがある場合に表示される非常に基本的なエラーです。
という方向けに解説していきます。
- 「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がそのコードの意味を正しく理解できなかったということです。
- セミコロン(
;
)の付け忘れ - カッコや波括弧(
()
,{}
)の閉じ忘れ - クォーテーション(
"
や'
)の閉じ忘れ - 不適切な文字列や構文(例:変数の前に
$
がない、演算子の誤用) - 予約語の誤使用(例:関数名に
echo
やclass
を使ってしまう)
特に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の構文チェック機能を活用することで、事前にエラーを発見できる
このエラーは「初心者向けのミス」と思われがちですが、経験者でもうっかり見落としやすいポイントが多いため、定期的に見直す癖をつけましょう。
エラーの内容を冷静に読み解き、対処すべき行や直前の構文を丁寧に確認することで、早期に問題解決できるはずです。
コメント