ホームページ >バックエンド開発 >PHPチュートリアル >php の $_SERVER はどこから来たのでしょうか?
私は tcpdump パケット キャプチャ コマンドを数か月前に学びました。問題が発生したときは常に試してみたいと思っています。これは、あらゆる醜いバグを目の前に表示してくれる顕微鏡のようなものです。
タイトルに記載されている質問があるのはなぜですか?取得した $_SERVER["SERVER_NAME"] が環境によって異なることが判明したためです。
$_SERVER 名前の通りサーバーの設定なのでnginxの設定に関係すると思います。これも真実です。
検証方法 1:
現象から判断すると、nginx の設定を変更し、PHP で変数を出力するだけです。
server{ listen *:8080 root /var/nginx server_name localhost;}
検証方法 2:
tcpdump を使用して nginx から php-fpm に送信されたリクエスト パケットをキャプチャし、Wireshark を使用して確認します
tcpdump tcp dst port 9000 -i lo -s 0 -w show &
それが確かに ngin であることがわかります× php-fpm を前提として、いくつかのサーバー側変数を渡します。
具体的な詳細については、fastcgi プロトコルを参照してください。
nginx 設定ファイルと同じディレクトリに fastcgi_params という名前の設定ファイルがあり、nginx はその中の変数を PHP に渡します。