「Notice: Use of undefined constant」と表示されるとき

WordPress個別サポート

「Notice: Use of undefined constant」は直訳すると「未定義の定数を使った」ですが、ほとんどの場合、深く考える必要はありません。単純な入力ミスです。以下、原因と対策を紹介します。

入力ミスで「Use of undefined constant」になる理由

定数の話から離れますが、たとえば、「サンプルPC教室」という文字列を画面に表示するコードを考えてみましょう。

<?php
echo "サンプルPC教室";
?>
実行結果
サンプルPC教室

PHPの入門書の最初に出てくるような何のオチもないコードですが、続いて文字列を囲んでいる「"」(または「'」)を取り除いてみましょう。

<?php
echo サンプルPC教室;
?>

これだけで次のような「Use of undefined constant」というエラーメッセージが表示されます。直訳すると「未定義の定数を使った」ですが、言うまでもなく原因は単純な入力ミスです。

実行結果
Notice: Use of undefined constant サンプルPC教室 - assumed 'サンプルPC教室' in …略…test.php on line 6
サンプルPC教室

同じようなエラーで困っている方は、「未定義の定数」の意味を深追いせずに、入力したコードを見直してみてください。

「未定義の定数の使用」とは

ここからは技術的な話なので、問題が解決した方は読まなくても大丈夫です。興味のある方だけ、読んでみてください。

単純な入力ミスで「Use of undefined constant」(未定義の定数の使用)のようなエラーメッセージが表示される原因は、表示しようと思った文字列が定数(内容が固定の要素)だと判断されてしまうからです。

以下は定数を出力する例です。

<?php
define('CONST1', 'テスト');
echo CONST1;
?>
実行結果
テスト

定数を使うには、最初にdefine関数で定義してから、定数名を呼び出す流れになります。定数名を呼び出す場合、前後を「"」や「'」で囲む必要はありません。つまり、定数を表示するコードは、単純に文字列を表示するときの入力ミスと同じようなコードになる場合があります。

実際、上記のコードでdefine関数を省略してみましょう。わかりやすいようにコメントにしてみます。

<?php
//define('CONST1', 'テスト');
echo CONST1;
?>
実行結果
Notice: Use of undefined constant CONST1 - assumed 'CONST1' in …略…test.php on line 7
CONST1

期待通り、「Notice: Use of undefined constant CONST1」となります。この場合は定数の定義忘れですが、思い当たる原因がない場合は、最初に説明したように単純な入力ミスです。エラーメッセージを深追いしないように注意しましょう。