HOME >> Tips >> PHP

「$_SERVER」変数を参照して「Notice: Undefined index: SERVER_ADDR in ...」 エラーが発生する

2017/8/4
文書番号:20757


PHP でサーバ-のアドレスを取得しようと、「$_SERVER["SERVER_ADDR"]」を参照したところ、以下のエラーが発生しました。

==================================================================
Notice: Undefined index: SERVER_ADDR in ... ==================================================================


前は参照できたのに?と思ってPHPのマニュアルを参照したところ、以下のような記述がありました。
==================================================================
On Windows IIS 7 you must use $_SERVER['LOCAL_ADDR'] rather than $_SERVER['SERVER_ADDR'] to get the server's IP address.
==================================================================
...8年前の記述らしいです。

PHP マニュアル $_SERVER

実行した環境は Windows の IIS 環境なので「SERVER_ADDR」ではなくて「LOCAL_ADDR」としないといけないようです。


echo $_SERVER["LOCAL_ADDR"];
このようにして参照できました。

どちらかしか入ってこないようなので開発環境と検証環境や実行環境が異なる場合はこのようにしておくといいかもしれません。

$addr = "";

if isset($_SERVER["SERVER_ADDR"]) {
  $addr = $_SERVER["SERVER_ADDR"];
}

if isset($_SERVER["LOCAL_ADDR"]) {
  $addr = $_SERVER["LOCAL_ADDR"];
}

【参考情報】

PHP マニュアル $_SERVER
http://php.net/manual/ja/reserved.variables.server.php