PHPでサーバーのIPアドレスやポート番号を取得する方法を解説
PHPを使ってWebアプリケーションを開発していると、実行中のサーバー自身のIPアドレスやポート番号を取得したい場面があります。例えば、サーバーの環境情報をログに記録したり、特定のサーバーでのみ処理を実行したい場合などが挙げられます。
$_SERVER['SERVER_ADDR'] でIPアドレスを取得する
最もシンプルな方法は、スーパーグローバル変数 $_SERVER を使うことです。サーバーのIPアドレスは、以下の1行のコードで取得できます。
$_SERVER['SERVER_ADDR'];
SERVER_ADDR には、現在のスクリプトを実行しているWebサーバーのIPアドレスが格納されています。例えば「192.168.1.10」のような文字列として返されます。
$_SERVER['SERVER_PORT'] でポート番号を取得する
同様に、サーバーが通信に使用しているポート番号も $_SERVER 変数から取得できます。
$_SERVER['SERVER_PORT'];
通常のHTTP通信であれば「80」、HTTPSであれば「443」などの値が返されます。
PHP 5.3以降で使える gethostname() 関数
PHPバージョン5.3以降では、以下のコードでもサーバーのIPアドレスを取得できます。
$host_addr = gethostname(); $ip_addr = gethostbyname($host_addr);
この方法では、まず gethostname() 関数でホスト名(コンピュータ名)を取得し、次に gethostbyname() 関数でそのホスト名に対応するIPアドレスを解決しています。
どのような場面で有効か
この手法は、CLI(コマンドライン)から実行されるスタンドアロンのPHPスクリプト、つまりWebサーバーを経由せずに動作するスクリプトで特に有用です。$_SERVER['SERVER_ADDR'] はWebサーバー経由のリクエスト時にのみ正しく設定されるため、CLI環境では gethostname() を使う方法が確実です。
まとめ
- Webサーバー経由の場合:
$_SERVER['SERVER_ADDR']でIPアドレス、$_SERVER['SERVER_PORT']でポート番号を取得できる - CLIスクリプトやPHP 5.3以降:
gethostname()とgethostbyname()の組み合わせでIPアドレスを取得できる
用途や実行環境に応じて適切な方法を選択することで、サーバーのネットワーク情報を柔軟に扱うことができます。
-
TeamSpeak 3サーバーの作り方|初心者向け簡単セットアップ手順ガイド
TeamSpeakは、複数のユーザー同士がリアルタイムで音声コミュニケーションを行えるよう開発されたアプリケーションです。仕組みとしては会議通話に近く、サーバーをホストする管理者と、そのサーバーへ接続するユーザーという役割分担で成り立っています。主な利用者は、ゲームをプレイしながら仲間と会話したいゲーマーたちです。 ゲーマーがTeamSpeakを利用するには、まず誰か一人が自分のPC上でサーバーをホストし、他のメンバーがそこへ接続する形になります。「難しそう」と感じるかもしれませんが、実際にはそれほど複雑ではありません。インターネット接続環境とPCの管理者権限さえあれば、短時間でサーバーを稼
-
Huluエラーコード「RUNUNK13」の原因と解決方法を徹底解説
Huluで動画を視聴しようとした際に、RUNUNK13というエラーコードが表示されて困っているユーザーは少なくありません。この問題は、WindowsやmacOSといったPCはもちろん、Android TVやiOSデバイスなど、幅広い端末で発生することが確認されています。調査の結果、このエラーコードが表示される原因は複数あることが判明しました。以下に、RUNUNK13エラーを引き起こすことが確認されている主な原因をまとめます。Huluサーバー側の障害 – Hulu側で障害やメンテナンスが発生しているタイミングで視聴を試みると、このエラーが表示されることがあります。この場合、ユーザー側で解決する手