ホームページ  >  記事  >  バックエンド開発  >  php の $_SERVER はどこから来たのでしょうか?

php の $_SERVER はどこから来たのでしょうか?

WBOY
WBOYオリジナル
2016-06-23 13:29:251313ブラウズ

私は 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 に渡します。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。