WordPressで「Parse error: syntax error」と出る原因と対処法
直らないときは、無料でご相談いただけます(直らなければ料金はいただきません)。
結論:「Parse error: syntax error」は、WordPressのプログラム(PHP)のファイルに書き間違いや、使っているPHPの版では使えない書き方があり、PHPがファイルを読み取れないときに出るエラーです。テーマの functions.php にコードを貼り付けた直後や、ファイルを書き換えた直後、PHPの版を上げた直後などに起こることがあります。
エラーの文には、書き間違いのあるファイルの場所と行の番号が出ます。直前にファイルを書き換えたなら、まずは書き換える前のファイルに戻します。画面には「このサイトで重大なエラーが発生しました。」だけが出て、Parse error の文はエラーログやメールで分かる場合もあります。
目次
この記事は、WordPressのトラブル解決を受け付けているWP-ingが、エラーの文の読み方と直し方をまとめたものです。
出る画面
PHPのエラーを画面に出す設定になっているサイトでは、次のような文が出ます(例です。ファイルの場所や行の番号はサイトによって違います)。
Parse error: syntax error, unexpected token "}" in /home/…/wp-content/themes/テーマ名/functions.php on line 25
エラーを画面に出さない設定のサイトでは、この文は見えず、WordPressの重大なエラーの仕組みによって、次の表示になる場合があります。
- サイトの表側:「このサイトで重大なエラーが発生しました。」
- 管理画面・ログイン画面:「この Web サイトに重大なエラーが発生しました。サイト管理者のメール受信箱で手順を確認してください。」
この表示が出ているときの確かめ方は、「重大なエラー」の記事にもまとめています。なお、wp-config.php に書き間違いがあるときは、WordPressのこの仕組みが動き出す前に止まるため、画面が真っ白になったり、「500」のエラーになったりすることがあります(真っ白の記事・500エラーの記事)。
エラーの文の読み方
| 文の部分 | 意味 |
|---|---|
Parse error: syntax error |
PHPの書き方(文法)に誤りがあり、ファイルを読み取れなかった |
unexpected ○○ |
○○のところで、PHPが思っていなかったものが出てきた |
in …/functions.php |
誤りのあるファイルの場所 |
on line 25 |
PHPが誤りに気づいた行。本当の誤りは、その行か、少し前の行にあることがあります |
ファイルの場所に wp-content/themes/ とあればテーマ、wp-content/plugins/ とあればプラグインのファイルです。
よく見る文と、原因の例
PHP 8.4 で確かめた文の例です。PHPの版によって、言い方が少し違うことがあります。同じ文でも、原因は一つとは限りません。
| 出る文(例) | 原因の例 |
|---|---|
syntax error, unexpected variable "$b" |
その前の行の終わりの「;」が抜けている |
Unmatched '}' |
閉じる「}」が多い |
Unclosed '{' on line 2 |
「{」を閉じる「}」が足りない。引用符(" や ')の閉じ忘れでも出ることがあります |
syntax error, unexpected token "<", expecting end of file |
コードを貼り付けたとき、途中に <?php がもう一度入った |
syntax error, unexpected token "{" |
PHP 8 で使えなくなった古い書き方($a{0} など)。PHPの版を上げた直後に出ることがあります |
ほかに、ネットのページからコードを写したときに、全角の空白( )や、形の変わった引用符(‘ ’・“ ”)が混ざって、思いがけない場所でエラーになることもあります。形の変わった引用符では、Parse error 以外のエラーになることもあります。
きっかけの例
- テーマの
functions.phpに、ネットで見つけたコードを貼り付けた - レンタルサーバーのファイルマネージャーやFTPのソフトで、テーマ・プラグイン・
wp-config.phpを書き換えた - レンタルサーバーでPHPの版を上げた(PHPの版を上げるときの手順)
管理画面の「テーマファイルエディター」「プラグインファイルエディター」で、使っているテーマ・有効なプラグインのPHPのファイルを保存したときは、WordPressが保存の後に管理画面とトップページを読み込んで、エラーが出ないかを確かめます。そこでエラーが見つかると、変更が取り消され、元のファイルに戻ります。このときは「○○ ファイルの○行目でエラーが発生したため、PHP コードの変更が適用されませんでした。修正して再度保存してください。」と出ます。ファイルマネージャーやFTPで書き換えたときや、止めているテーマ・プラグインのファイルを書き換えて、後から有効にしたときは、この確かめは行われません。
作業の前に確かめること
- バックアップ:レンタルサーバーの自動バックアップなどがあるか。いつの時点のものか(保存日時)と、元に戻す方法も見ておきましょう(更新の前のバックアップ)。
- 今のファイルの写し:直す前に、エラーの出ているファイルを手元にダウンロードしておきます。直し方を間違えても、今の状態には戻せます。
直し方
まず1でファイルと行を確かめます。そのファイルを自分で書き換えた場合は2・3へ、書き換えていない場合は4へ進みます。
1. どのファイルの何行目かを確かめる
画面にエラーの文が出ていれば、ファイルの場所と行の番号を書き写します。画面に「重大なエラー」だけが出ているときは、次のどちらかで分かることがあります。
- 管理者へのメール:原因のテーマやプラグインが分かると、WordPressから「設定」→「一般」の管理者メールアドレスあてに、件名「[サイト名] サイトで技術的な問題が発生しています」のメールが届くことがあります。「エラー詳細」の欄に「エラータイプ E_PARSE が …ファイルの …行目で発生しました。」と、ファイルと行が書かれています。
- サーバーのエラーログ:「
Parse error」を含む記録に、ファイルと行が残っていることがあります。エラーが出始めた日時と合う記録を見ます(主なレンタルサーバーでの確かめ方)。
2. 書き換える前のファイルに戻す
直前に書き換えたファイルなら、まずは、ファイルマネージャーやFTPのソフトで、書き換える前のファイルを元の場所に戻します。手元に写しが無いときは、レンタルサーバーのバックアップから、そのファイルだけを戻せる場合もあります。
コードを貼り付けて足しただけで、元からあったコードを変えたり消したりしていない場合は、貼り付けた部分だけを消して保存すると、元の状態に戻せます。
3. 戻せる写しが無いとき
書き換える前のファイルが無いときは、エラーの文に出た行と、その少し前の行を見て、次のところを確かめます。どこを直せばよいか分からないときは、無理に書き換えを続けず、ご相談ください。
- 行の終わりの「
;」が抜けていないか - 「
{」と「}」、「(」と「)」が、正しい組み合わせで閉じられているか - 引用符(
"や')が、始まりと終わりでそろっているか - 貼り付けた部分に、
<?phpが余分に入っていないか - 全角の空白や、形の変わった引用符が混ざっていないか
直したら保存し、もう一度サイトを開きます。直してもエラーが続くときや、別の行のエラーに変わったときは、作業の前にダウンロードした写しに戻してから、ご相談ください。
直した後に「Warning: Cannot modify header information – headers already sent」と出るときは、ファイルの先頭や最後に、空白や空の行が入っていることがあります(「headers already sent」と出るときの記事)。
wp-config.php には、データベースのパスワードなどの大事な情報が書かれています。人に相談するときや、ネットで調べるときは、ファイルの中身を含めずに、エラーの文だけをお知らせください。
4. 書き換えていないプラグインやテーマのファイルのとき
自分では書き換えていないプラグインやテーマのファイルで出ている場合は、更新や、PHPの版の変更がきっかけになっていることがあります。
- PHPの版を変えた直後なら、元の版に戻すと表示が戻ることがあります。これは一時的な対処なので、表示が戻った後に、プラグインやテーマが今のPHPの版に対応した新しい版を出していないかを確かめます。
- プラグインなら、
wp-content/pluginsの中の、そのプラグインのフォルダ名を変えると、そのプラグインが止まります(例:plugin-name→plugin-name-off)。くわしくは「重大なエラー」の記事の「プラグインを止めて確かめる」をご覧ください。 - テーマなら、同じ記事の「テーマを確かめる」の手順で、WordPressに標準のテーマに切り替えて確かめます。
止めた・切り替えた後は、プラグインやテーマに新しい版が出ていないか、今のPHPの版に対応しているかを確かめます。分からないときは、ご相談ください。
5. 直った後に確かめること
- ログアウトした状態で、トップページ・エラーの出ていたページ・お問い合わせフォームなどが、ふだんどおり動くか(必要に応じてスマホでも)
- 管理画面に入れるか
- 確かめるために、PHPのエラーを画面に出す設定にしていた場合は、元に戻したか(そのままだと、訪問者にもファイルの場所などが見えてしまいます)
主なレンタルサーバーでの確かめ方
| サーバー | エラーの確かめ方 |
|---|---|
| エックスサーバー | サーバーパネル「エラーログ」 |
| ConoHa WING | 「サイト管理」→「アクセス解析」→「ログ」 |
| ロリポップ! | 「PHP設定」の display_errors で、エラーを画面に出す設定を一時的に有効にする(訪問者にもエラーの中身が見えることがあるため、確かめたらすぐ元に戻す) |
| さくらのレンタルサーバ | サーバーコントロールパネルの「サーバーステータス」→「アクセスログ」で、エラーログの「保存する」に印を付けてから、「本日のエラーログ」で見る |
画面の名前は変わることがあるため、くわしくは各社の案内をご覧ください。
自分で直すのが難しいとき
次のような場合は、無理に作業を進めず、ご相談ください。
- どのファイルの何行目か分からない
- 書き換える前のファイルが無く、どこを直せばよいか分からない
- 直すたびに、別のエラーが出る
- ファイルマネージャーやFTPの使い方が分からない
WP-ingでは、このエラーをはじめ、WordPressの不具合の修理を承っています。状況を確かめて、作業の前に料金をご案内します。直らなければ料金はいただきません。お支払いは、直ったことを確かめていただいてからです。
よくある質問
管理画面のエディターで直せますか?
管理画面に入れて、直したいのが使っているテーマ・有効なプラグインのファイルなら、「テーマファイルエディター」「プラグインファイルエディター」で直せることがあります。保存の後の確かめでエラーが見つかれば、WordPressが変更を取り消します。サイトや管理画面が開けないときは、ファイルマネージャーやFTPのソフトで直します。
エラーの行を見ても、おかしなところが見つかりません。
PHPは、誤りのところから少し先まで読んでから、エラーに気づくことがあります。出た行より前の行を、さかのぼって確かめてみてください。「Unclosed '{' on line 2」のように別の行の番号が入っているときは、その行の「{」がどこで閉じられているかを確かめます。