【PHPエラー】Warning: Undefined variableの解決方法
PHPでプログラムを作っていると突然表示されるエラー文章。突然エラーが表示されると焦ってしまいますよね。
この記事ではWarning: Undefined variable
エラーというPHPでプログラムを作っているとよく発生するエラーについて原因と、解決方法をご紹介します。
この記事の目次を表示
Warning: Undefined variableとは
Warning: Undefined variable ●● in ▲▲ on line ■■
●●:値の無い変数名
▲▲:ディレクトリ名/ファイル名
■■:エラーの原因となる●●が書かれている行数
エラーが表示される原因
<?php
echo $var;
// Warning: Undefined variable var ...が表示されます
?>
このWarning
エラーは、存在しない変数を参照しようとした時に表示されるものです。値のない変数というのは参照することが出来ません。
そのような時に表示されるエラーがWarning: Undefined variable
です。
Notice: Undefined variableとの違いは?
Notice: Undefined variable ●● in ▲▲ on line ■■
よく似たPHPエラーにNotice: Undefined variable
があります。
利用しているサーバー環境によってはNotice: Undefined variable
と表示されます。
PHPのバージョンが5系の場合はNotice: Undefined variable
と表示されます。
若干エラー文章は異なりますが、どちらも同じことが原因のエラーです。
解決方法
このエラーが表示されたときの解決方法はいくつかあります。それぞれの解決方法を順番に見ていきましょう。
変数の有無を確認する
<?php
if (isset($var)) {
echo $var;
}
?>
isset()
関数を使用して、変数に値があるかどうかを事前にチェックします。値がある場合のみ変数の値を出力します。
変数に値を入れる
<?php
$var = "Hello, world!";
echo $var;
?>
このエラーは変数に値が格納されていないことが原因です。そのため予め変数に値を格納することでエラーの表示を防ぐことが出来ます。
ただし、この方法の場合、必ず変数に値を入れる必要があるため、現実的には上でご紹介した方法を取ることが一般的です。
エラー表示設定を変更する
サーバーの管理画面からPHPの設定や.htaccess
、php.ini
の設定を変更してエラー出力を無くすことでもエラーの表示を無くすことが出来ます。
しかし、この方法は根本的な解決にはなっていません。後々、想定外の問題が発生する恐れがあるため、基本的には上の解決方法を取るようにします。
突然表示されるようになった場合
PHPプログラムを改編していないのに突然エラーが表示されるようになったという事が起こることもあります。
この場合、以下のようなことが原因として考えられます。
PHPのバージョンが変更された
PHPのバージョンが変更されると今まではその記述でもよかったものがエラーとなってしまうことがあります。厳密には間違った書き方だったけどエラーが表示されることなく処理されていたけど、PHPのバージョンが変わり記述がより厳密になったため表示されることがあります。
エラー表示設定が変更された
先ほど解決方法の一つとして紹介したエラー表示設定の変更。以前まではエラ―表示設定が無効になっていたけど、ある時誰かがエラー表示設定を有効化した。そんな時、突然エラーが表示されるようになります。
このようなことが起こる恐れもあるため、エラ―表示設定の変更でこのエラーを解決することは避けたほうが賢明です。
サーバーを変更した
PHPプログラムは改編していないけどサーバーを移行した、そういう場合もエラーが起こる恐れがあります。
移行前のサーバーではエラー表示設定が無効になっていたけど、移行先のサーバーではエラー表示設定が有効になっていた、こんな事も想定されるため、やはりエラー表示設定の変更でこのエラーを解決することは避けたほうがいいですね。
まとめ
今回の記事ではWarning: Undefined variable
というPHPエラーについて解説しました。
このエラーはどれだけプログラミングに慣れていても、うっかりで発生してしまう恐れのあるエラーです。
ただし、解決方法は至ってシンプルです。このエラーに出くわしてしまっても焦らず、エラー文から原因となる箇所を適切に書き換えていきましょう。