5

$_SERVER['SERVER_ADDR']常に設定されていますか?

isset() で確認する必要がありますか、それとも不要ですか?

127.0.0.1/localhost かどうかを確認できるように、サイトの IP を取得する必要があります。

4

4 に答える 4

4

いいえ、設定されCLIていません。常にではありません。

$ php -r "echo $_SERVER['SERVER_ADDR'];"

(出力なし)

(PHP.ini 設定に基づいて) ログに記録または報告されたエラーがある場合は、次のメッセージも表示されます。

PHP Notice: Undefined index: SERVER_ADDR in Command line code on line 1
于 2011-08-10T22:56:05.527 に答える
3

常に設定されるわけではありません。サーバーがなくても PHP をインストールして、コマンド ラインから実行できることを考慮してください。いずれの変数についても保証はありませんが$_SERVER、サーバーで一度試してみて動作する場合は、そのサーバー構成で常に設定されると確信できます。サーバーの構成に大きな変更を加えたり、サーバーを切り替えたりした場合は、もう一度確認する必要があることをどこかにメモしておく必要があります。

サーバー変数の値を確認することもできますphpinfo()

于 2011-08-10T22:58:15.657 に答える
1

CLI は設定されていない場合の良い例ですが、すべての_SERVER値は php が実行されているサーバーによって設定されるため、使用しているサーバーとその構成によっては、とにかく設定されるという保証はありません。

于 2011-08-10T23:18:45.713 に答える
0

前にcli経由で言ったように、それは利用できません。cli または HTTP 呼び出しの両方で IP アドレスを知る必要がある場合に備えて、次のようなものを使用することを検討してください。

$IP = isset($_SERVER['SERVER_ADDR'])?$_SERVER['SERVER_ADDR']:gethostbyname(gethostname());
于 2015-05-04T09:46:51.333 に答える