ThinkPHPでサーバー出口IPを確認する方法

著者:Lisa Farrell · 2026-06-01

ThinkPHPプロジェクトでは、サーバー側から https://my.ipin.io/info を呼び出すことで、外部インターネットへアクセスする際のサーバー出口IPを確認できます。これは運用診断やプロキシ確認に適しています。

APIの説明

サーバー側呼び出しはサーバーの出口IPを確認し、公開ネットワーク上で見えるIP、国、地域、都市を返します。

{"ip":"185.220.236.7","country":"TW","region":"Taiwan","city":"Taipei"}

利用シーン

これらの利用シーンはIP情報インターフェースの価値を示し、サーバーIPと訪問者IPを明確に区別します。

  • これらの利用シーンはIP情報インターフェースの価値を示し、サーバーIPと訪問者IPを明確に区別します。
  • ThinkPHPでサーバー出口IPを確認する方法
  • APIの説明
  • SEOとUXの推奨事項

実装ロジック

実装前にリクエスト元を確認します。サーバーリクエストはサーバーIP、ブラウザリクエストは訪問者IPを返します。

  • 実装前にリクエスト元を確認します。サーバーリクエストはサーバーIP、ブラウザリクエストは訪問者IPを返します。
  • サーバー側呼び出しはサーバーの出口IPを確認し、公開ネットワーク上で見えるIP、国、地域、都市を返します。
  • 以下の例はすべて https://my.ipin.io/info を直接使用し、コメントと画面文言も現地語化しています。
  • デフォルト内容は完全で読みやすく保ち、地域別内容は拡張として扱います。検索エンジンは安定した内容を取得でき、API失敗時もページは利用できます。

コード例

以下の例はすべて https://my.ipin.io/info を直接使用し、コメントと画面文言も現地語化しています。

ThinkPHP Controller

<?php
namespace app\controller;

use app\BaseController;

class IpController extends BaseController
{
    public function server()
    {
        $default = [
            'ip' => '不明',
            'country' => '不明',
            'region' => '不明',
            'city' => '不明',
        ];

        try {
            // サーバー側から /info を呼び出し、サーバー出口IPを確認します。
            $json = @file_get_contents('https://my.ipin.io/info');
            $data = json_decode($json, true);
            $info = is_array($data) ? array_merge($default, $data) : $default;
        } catch (\Throwable $e) {
            $info = $default;
        }

        return view('server_ip', ['info' => $info]);
    }
}

server_ip.html

<div class="ip-card">
  <h2>サーバー出口IP情報</h2>
  <p>IP:{$info.ip|default='不明'}</p>
  <p>Country:{$info.country|default='不明'}</p>
  <p>Region:{$info.region|default='不明'}</p>
  <p>City:{$info.city|default='不明'}</p>
</div>

SEOとUXの推奨事項

デフォルト内容は完全で読みやすく保ち、地域別内容は拡張として扱います。検索エンジンは安定した内容を取得でき、API失敗時もページは利用できます。

よくあるミス

以下の問題は、記事の正確性、コードの実用性、API説明の信頼性に影響します。

  • 以下の問題は、記事の正確性、コードの実用性、API説明の信頼性に影響します。
  • デフォルト内容は完全で読みやすく保ち、地域別内容は拡張として扱います。検索エンジンは安定した内容を取得でき、API失敗時もページは利用できます。
  • 実装前にリクエスト元を確認します。サーバーリクエストはサーバーIP、ブラウザリクエストは訪問者IPを返します。
  • これらの利用シーンはIP情報インターフェースの価値を示し、サーバーIPと訪問者IPを明確に区別します。

まとめ

サーバー側呼び出しはサーバーの出口IPを確認し、公開ネットワーク上で見えるIP、国、地域、都市を返します。

よくある質問

以下の質問はこの記事専用に整理しており、実装内容と直接関係しています。

質問:なぜリクエスト元を区別する必要がありますか?
回答:サーバー呼び出しはサーバーを表し、ブラウザ呼び出しは訪問者を表すためです。
質問:なぜデフォルト内容が必要ですか?
回答:SEO、初回表示、API失敗時の安定性を守るためです。
質問:国を追加できますか?
回答:はい。マッピング表に国コードを追加します。
質問:バックエンドの動作は変わりますか?
回答:別途サーバーロジックを追加しない限り、表示だけが変わります。
質問:APIが失敗したらどうなりますか?
回答:デフォルト内容、リンク、メッセージを維持します。