概要説明
PHP 7 の Warning「Use of undefined constant xxx - assumed 'xxx' (this will throw an Error in a future version of PHP)」は、PHP 8 では Fatal error になりサイトが止まる。原因(クォートのない配列のキー・全角スペース)と直し方、grep での探し方。
エラーの文(PHP 7 と PHP 8 で違う)
PHP 7.2〜7.4 では、次の Warning が出ます。
Warning: Use of undefined constant xxx - assumed 'xxx' (this will throw an Error in a future version of PHP)
「将来の PHP ではエラーになる」という予告です。その将来が PHP 8 で、同じ書き方は次の Fatal error になり、そこで処理が止まります。
Fatal error: Uncaught Error: Undefined constant "xxx"
PHP 7 のときに Warning が出ていたのに直していないと、サーバーの PHP を 8 に上げたとたんに、サイトが真っ白になったり、「重大なエラー」が出たりします。
PHP 7 の Warning の段階では表示は続きますが、PHP 8 では止まります。PHP のバージョンを上げる前に、エラーログにこの Warning が出ていないかを確かめて直しておきます。
| xxxが空白の場合 | ソース内に全角スペースが使用されている可能性がある |
|---|---|
| xxxがidの場合 | idを指定する際にシングルクオーテーションを使っていない可能性がある |
警告・エラーになる書き方
// 配列のキーにクォートがない(id が「定数」として読まれる) echo get_permalink( $atts[id] ); // 全角スペースが入っている(=> のあとの空白が全角) $args = array( 'id' => 117 );
echo get_permalink( $atts['id'] ); // キーはクォートで囲む $args = array( 'id' => 117 ); // 空白は半角にする
テーマやプラグインのファイルから、同じ書き方を探すときは、サーバーの SSH(ターミナル)で grep を使います。
# クォートのない配列のキー($atts[id] のような書き方)を探す grep -rnE '\$[A-Za-z_][A-Za-z0-9_]*\[[A-Za-z_][A-Za-z0-9_]*\]' --include=*.php wp-content/themes/テーマのフォルダ # 全角スペースを探す grep -rn " " --include=*.php wp-content/themes/テーマのフォルダ
- 1 つ目は、$atts[id] のように、配列のキーがクォートで囲まれていない所を探します。定数をキーにしている所($a[PHP_EOL] など)も出るので、1 つずつ見て直します。
- 2 つ目のかぎかっこの中は全角スペースです。全角スペースは画面では見分けにくいので、grep で探すのが確実です。
- PHP の構文チェック(php -l)では見つかりません(動かしたときに分かるエラーのため)。
確かめた結果
同じファイルを PHP 7.3 と PHP 8.3 で動かしました。
| 書き方 | PHP 7.3 | PHP 8.3 |
|---|---|---|
| $atts[id] | Warning(’id’ として続ける) | Fatal error: Undefined constant “id”(止まる) |
| => のあとに全角スペース | Warning(「 117」という文字として続ける) | Fatal error: Undefined constant “ 117″(止まる) |
上の 2 つの grep で、どちらの行も見つかりました。
エラーログを見る
Warning は画面に出ないことが多いので、エラーログで見つけます。WordPress のエラーを debug.log に書くには、wp-config.php に次のように書きます(「That’s all, stop editing!」の行より上)。
// エラーを画面に出さず、wp-content/debug.log に書く define( 'WP_DEBUG', true ); define( 'WP_DEBUG_LOG', true ); define( 'WP_DEBUG_DISPLAY', false );
このサイトでは、Error Log Monitor プラグインで、ダッシュボードからエラーログを見ています。ただし、2026 年 10 月の時点で最後の更新が 2025 年 10 月で、動作確認は WordPress 6.8 までです。使うときは、更新の状況を確かめてください。
PHP のバージョンを上げるときや、エラーで表示されなくなったときのご相談は、こちらでも受けています。


