フリーランス|WEB 制作経験丸7年、制作会社様からのご依頼に丁寧・高クオリティでお手伝いいたします。 IRODORI DESIGN

B L O G

【PHPエラー】Parse error: syntax error, unexpectedの解決方法

Parse error: syntax error
PHP
unexpected
エラー
トラブルシューティング
プログラミング

こんにちは、岐阜・名古屋を拠点に全国各地からご依頼いただくWEBサイトを制作しているフリーランスエンジニアの寺井です。

PHPでプログラムを作っていると突然表示されるエラー文章。突然エラーが表示されると焦ってしまいますよね。
この記事ではParse error: syntax error, unexpectedというPHPでプログラムを作っているとよく発生するエラーについて原因と、解決方法を解説します。

Parse error: syntax error, unexpectedとは

PHPでプログラミングをしていると必ず出くわすこのParse error: syntax error, unexpected
syntaxという英単語は構文という意味です。つまりこのエラーはPHPの文法・構文上、間違っている記述がある場合に表示されるエラーです。

PHPに限らず、プログラミング言語は「;」や「}」が抜けているだけの記述ミスでもこのようにエラーとなってしまいます。

パターン別の解決方法

それではここからは、よくあるParse error: syntax error, unexpectedの例と解決方法をご紹介したいと思います。
以下のPHPコードをもとにどこを記述ミスすると、どのようなParse error: syntax error, unexpectedが表示されるのか順番に見ていきましょう。

<?php

$a = 5;
function test($a,$b){
    $c = $a + $b;
    return $c;
}

echo test($a,1);

?>

Parse error: syntax error, unexpected ‘function’ (T_FUNCTION) in の場合

Parse error: syntax error, unexpected 'function' (T_FUNCTION) inが表示された場合、4行目のfunction test($a,$b)の直前を見てみましょう。

以下の書き方をした場合、このエラーが表示されました。;(セミコロン)が抜けているため、次のfunctionがエラーを起こしてしまいました。

<?php

$a = 5 ← ★ここの;(セミコロン)が抜けている
function test($a,$b){
    $c = $a + $b;
    return $c;
}

echo test($a,1);

?>

Parse error: syntax error, unexpected ‘=’ in の場合

Parse error: syntax error, unexpected '=' inが表示された場合、3行目を見てみましょう。

以下の書き方をした場合、このエラーが表示されました。変数名に-(ハイフン)を使ってしまったため、エラーを起こしてしまいました。
PHPでは変数名に-(ハイフン)を使用することは出来ません。

<?php

$a-z = 5; ← ★変数名に-(ハイフン)を使用している
function test($a,$b){
    $c = $a + $b;
    return $c;
}

echo test($a,1);

?>

Parse error: syntax error, unexpected ‘{‘, expecting ‘)’ in の場合

Parse error: syntax error, unexpected '{', expecting ')' inが表示された場合、4行目を見てみましょう。

以下の書き方をした場合、このエラーが表示されました。)(閉じカッコ)が抜けているため、その次に記述されている{(カッコ)の部分で処理が止まってしまい、エラーを起こしてしまいました。

<?php

$a = 5;
function test($a,$b{ ← ★)(閉じカッコ)が抜けている
    $c = $a + $b;
    return $c;
}

echo test($a,1);

?>

Parse error: syntax error, unexpected end of file in の場合

Parse error: syntax error, unexpected end of file inが表示された場合、11行目を見てみましょう。

<?php

$a = 5;
function test($a,$b{)
    $c = $a + $b;
    return $c;
 ← ★}(閉じカッコ)が抜けている

echo test($a,1);

?>

以下の書き方をした場合、このエラーが表示されました。}(閉じカッコ)が抜けているため、予期せずファイルの処理が終了してしまったため、エラーを起こしてしまいました。

まとめ

いかがでしたか?
上の例でいくつかご紹介したように、ちょっとした記述ミスでもParse error: syntax error, unexpectedとなってしまいます。
記述ミスの内容により若干エラー文章は異なるので、エラー個所とエラー文章を手掛かりにどこがどのように間違っているのか実際にソースをもとに見つけましょう。