★★★ たった "1日" でできるWordPressブログの作り方講座 ★★★ はじめてみる

「syntax error, unexpected ‘?’」が出た時のWordPress対処法

WordPress管理画面にログインした時のこと…

真っ白画面にこんなエラーが表示されました。

Parse error: syntax error, unexpected '?'

少し厄介なエラーではありますが、
自力で解決することも不可能ではありません。

この解決方法には2種類があります。

※ ただしセルフ解決するなら自己責任!!

その原因・解決策とかを色々解説していきます。

なぜか syntax error, unexpected '?' がログイン画面で発生

WordPressにログインしようとした時

なぜか次のホワイトスクリーンに遭遇しました。

▼ 全WPユーザーが恐れるあの画面

Parse error: syntax error, unexpected '?' in /home/hogehoge/hogehoge.com/public_html/wp-content/plugins/jm-twitter-cards/admin/views/settings/settings.php on line 61

簡単に説明すると Syntax error = 「構文エラー」のこと、そして原因は unexpected '?' = 「予期せぬはてなマークあるよ」とエラーメッセージは伝えています。

分からない人からしたら厄介すぎる問題です。

原因はプラグインの入れすぎ&不用意に最新アプデしたこと

実はログイン前に次を試したんですよね。

  • 未更新のプラグインがあるのを気づく
  • それを最新にアップデート

プラグインのどれかがエラー排出したようです。

なぜ分かったかは先ほどのエラーに書いてあったから

↓ この短いエラーにたくさんのヒントが隠れている

Parse error: syntax error, unexpected '?' in /home/hogehoge/hogehoge.com/public_html/wp-content/plugins/jm-twitter-cards/admin/views/settings/settings.php on line 61

↓ jm-twitter-cardsプラグインのsettings.phpが原因

/home/hogehoge/hogehoge.com/public_html/wp-content/plugins/jm-twitter-cards/admin/views/settings/settings.php

このようにWordPressでは pluginsフォルダにプラグイン全てが格納されていて、その中のフォルダ名(ここではjm-twitter-cards)がプラグイン名をあらわしてます。

その中のsettings.phpが構文エラーを吐いていた……

こういう風にエラーメッセージから色々推理できます。

これは使える知識なので知ってて損はないです。

問題のプラグインPHPファイルを開いて確認した

次にエラー原因のプラグインファイルを調べました。

↓ 以下の場所に問題があった

[
    'name'    => 'twitterImage',
    'label'   => esc_html__('Image Fallback', 'jm-tc'),
    'type'    => 'file',
    'default' => $opts["twitterImage"] ?? "",
],

↓ エラー行だけを抜き出すとココ

'default' => $opts["twitterImage"] ?? ""

ここが syntax error, unexpected '?' の原因。

なんとPHP7以上でしか動かない構文なんです。

でもPHPコードとしては正しい真っ当なコードです。

  • 自分の環境はPHP5で動いていた
  • だからPHP7の最新構文には対応してない
  • 結果としてエラー発生(泣)

こういう理由だったと分析で判明しました。

この ?? = はてな2つ はnull合体演算子という構文

この構文はnull合体演算子と呼ばれる構文です。

↓ null合体演算子のシンプルな例

$opts = ["name" => "Fukuro"];
$name = $opts["name"] ?? "Unknown";

このコードだと $opts["name"] がnullでなかったらその値を採用し、もしnullだったら右の値 "Unknown" が評価されるって感じです。

PHP7以前の書き方なら次と同じになります。

↓ null合体演算子はPHP5以前ならこう書ける

$opts = ["name" => "Fukuro"];
$name = isset($opts["name"]) 
    ? $opts["name"] : "Unknown";

プログラマーは冗長さを嫌うそうです。
だからできるだけ短くムダなく書きたい。

その願望を叶えるのがnull合体演算子という訳です。

それがエラーの原因とは皮肉ですね……

このsyntax error, unexpected '?'のWordPressでの解決策

まあWordPressに限った話ではないです。

次のどちらかの解決策を試してください。

1.PHPバージョンを思い切ってPHP7に切り替える

初めに思いつくのはPHP7に切り替えること

そもそも古いPHPを使ってるのが原因です。
だからPHPバージョン7に切り替えるのがベスト

ところがリスクもあるから気を付けてください。

  • 互換性のないコードによるエラーリスク
    → PHP5以下では動いてたけどPHP7以降では動かないコードがプラグイン・テーマに紛れてるかも。そういうリスクを覚悟すべき
  • 古いWordPressだとPHP7と互換性がないリスク
    → 断言できないけどWordPressバージョン(ver3以下?)ではPHP7・PHP8などと互換性がないケースがある。そういうリスクを覚悟すべき

このリスクを受け入れるなら試してください。

以下はWordPress + PHPバージョンアップの関連記事

▼ WordPressサーバー応答時間を短縮する効果的な方法

WordPressでサーバーの応答時間を短縮するのに"一番"効果的な方法
PageSpeed Insightsで「サーバーの応答時間の圧縮」という提案を見たことありませんか?WordPressの場合はサーバーである設定を行うだけでその応答時間(TTFB)を劇的に短くできます。ここではその設定方法について解説します。

▼ PHPバージョンアップでWordPresエラーの対処法

PHPバージョンアップでWordPresエラーの対処法
PHPバージョンアップでWordPressでエラーが出た、管理画面にアクセスできなくなった・・・そういった時の対処法について。自分自身の経験と、今までのご相談事例を元にまとめました。

相当リスクがあるので自己責任でお願いします。

PHPコードが書けてWordPresも理解している……

そういう人は自力解決に挑戦してみてください。

2.古いPHPと互換性のあるコードに修正する

この syntax error, unexpected '?' エラー

そもそも古いPHPと互換性がないから問題です。

それなら古いPHPと互換性のある書き方に直せば解決

↓ 例えば先ほどのプラグインコード例(×)

[
    'name'    => 'twitterImage',
    'label'   => esc_html__('Image Fallback', 'jm-tc'),
    'type'    => 'file',
    'default' => $opts["twitterImage"] ?? "",
],

↓ このコードなら次のように修正する(○)

[
    'name'    => 'twitterImage',
    'label'   => esc_html__('Image Fallback', 'jm-tc'),
    'type'    => 'file',
    'default' => isset($opts["twitterImage"]) 
        ? $opts["twitterImage"] : "",
],

地道にnull合体演算子が使われているプラグイン・テーマのコードを修正していってください。あるいは使わないなら停止するか・削除するでもOKです。

とにかくnull合体演算子を使わないコードにする

もちろん自己解決するなら自己責任でお願いします。

WordPress初心者・中級者なら詳しい人に相談しよう

以上の方法はWP初心者には難易度高すぎです。

  • 最低でもPHPコードが書けないといけない
  • エラー箇所を自分で修正しないといけない
  • PHPバージョンアップもリスクが大きい

問題をさらに悪化させることもあります。

少なくともWordPress初心者にはムズすぎです。

もし自力解決できずに困っているなら……

迷わず次の場所で相談した方がいいですよ。

特に修正代行依頼したいなら1番目のサービスが一番

そこで 《Webサイト制作・Webデザイン》 から依頼してみてください。

ちなみに、私自身もそこでサービス出品してます。

WordPressのトラブル解決相談始めました!
WordPressが真っ白になった、デザインが崩れた・・・そんなWordPressのトラブル解決相談ができるサービスをココナラで始めました!もしWPのブログ運営で困った時は是非ご利用ください。お得な割引情報もお知らせ・・・

WordPressブログ経験歴の長さ。
トラブルに遭遇して自力解決した経験。

それを武器にWPトラブル解決相談をやってます。

もしお困りならお気軽にご相談ください。

The following two tabs change content below.

フク郎

昔はプログラミングに熱中していたが、ブログとWordPressに興味を持ち始め今はサイト・ブログ作りが生きがい。自分の「好き」をブログに変えたい、情報発信したい人に役立つWordPress術・サイト構築術を発信中。一日一歩楽しんでブログ構築できるように読みやすい&楽しい記事作りを心がけています。