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

B L O G

【PHPエラー】Notice: Undefined variableの解決方法

PHP
Warning
エラー
トラブルシューティング
プログラミング

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

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

Notice: Undefined variableとは

Notice: Undefined variable ●● in ▲▲ on line ■■

●●:値の無い変数名
▲▲:ディレクトリ名/ファイル名
■■:エラーの原因となる●●が書かれている行数

エラーが表示される原因

<?php
    echo $var;
    // Notice: Undefined variable var ...が表示されます
?>

このWarningエラーは、存在しない変数を参照しようとした時に表示されるものです。値のない変数というのは参照することが出来ません。
そのような時に表示されるエラーがNotice: Undefined variableです。

解決方法

このエラーが表示されたときの解決方法はいくつかあります。それぞれの解決方法を順番に見ていきましょう。

変数の有無を確認する

<?php
    if (isset($var)) {
        echo $var;
    }
?>

isset関数を使用して、変数に値があるかどうかを事前にチェックします。値がある場合のみ変数の値を出力します。

変数に値を入れる

<?php
    $var = "Hello, world!";
    echo $var;
?>

このエラーは変数に値が格納されていないことが原因です。そのため予め変数に値を格納することでエラーの表示を防ぐことが出来ます。
ただし、この方法の場合、必ず変数に値を入れる必要があるため、現実的には上でご紹介した方法を取ることが一般的です。

エラー表示設定を変更する

サーバーの管理画面からPHPの設定や.htaccess、php.iniの設定を変更してエラー出力を無くすことでもエラーの表示を無くすことが出来ます。
しかし、この方法は根本的な解決にはなっていません。後々、想定外の問題が発生する恐れがあるため、基本的には上の解決方法を取るようにします。

突然表示されるようになった

PHPプログラムを改編していないのに突然エラーが表示されるようになったという事が起こることもあります。
この場合、以下のようなことが原因として考えられます。

エラー表示設定が変更された

先ほど解決方法の一つとして紹介したエラー表示設定の変更。以前まではエラ―表示設定が無効になっていたけど、ある時誰かがエラー表示設定を有効化した。そんな時、突然エラーが表示されるようになります。
このようなことが起こる恐れもあるため、エラ―表示設定の変更でこのエラーを解決することは避けたほうが賢明です。

サーバーを変更した

PHPプログラムは改編していないけどサーバーを移行した、そういう場合もエラーが起こる恐れがあります。
移行前のサーバーではエラー表示設定が無効になっていたけど、移行先のサーバーではエラー表示設定が有効になっていた、こんな事も想定されるため、やはりエラー表示設定の変更でこのエラーを解決することは避けたほうがいいですね。

まとめ

今回の記事ではNotice: Undefined variableというPHPエラーについて解説しました。
このエラーはどれだけプログラミングに慣れていても、うっかりで発生してしまう恐れのあるエラーです。
ただし、解決方法は至ってシンプルです。このエラーに出くわしてしまっても焦らず、エラー文から原因となる箇所を適切に書き換えていきましょう。