質問: phpで「$_SERVER」を使ったコードが表示されません。 ローカル環境 VagrantにLAMP環境 ``` ``` としても何も表示されません。 どなたか原因がわかる方いらっしゃいますか? フォルダ階層は、 /var/www/html/index.php で、 DocumentRoot "/var/www/html" です。 実行環境はブラウザ(Google Chrome)です。 var_dump($_SERVER); とすると「array(0) { }」とでます。 「php.ini」を変えたら動きました。 原因はこれから調査します。 ありがとうございました。
回答: こういうときはPHPマニュアル確認ですね。 * PHPマニュアル:$_SERVER > > $_SERVER は、ヘッダ、パス、スクリプトの位置のような 情報を有する配列です。この配列のエントリは、Web サーバーにより 生成されます。**全ての Web サーバーがこれら全てを提供する保障はありません。 サーバーは、これらのいくつかを省略したり、この一覧にない他のものを 定義する可能性があります。**これらの変数の多くは、 » CGI/1.1 specification で定義されています。したがって、これらについては定義されていることを 期待することができます。 > > > 太字部分確認。 まあつまり、サーバー側の設定や何かかなと。 「全てを提供する保障がない」ということは何も提供されていなければ中身はarray{}となりますよね。 $_SERVER自体はスーパーグローバル変数なので変数自体は自動で定義されているはずですが、中身はまたWebサーバーに依存するのではないでしょうか。 もちろん「他人が再現できる」情報として * コード * サーバーの種類、バージョン(サーバー構築の手法などもあれば) * PHPのバージョン(マイナーバージョンまで) * 実行の仕方 コマンドなのかブラウザからアクセスなのか。 →コマンドなら実行のコマンド →ブラウザならアクセスURL の提示は必要です(完全な再現確認にはどれか1つでも欠けてはいけません) **サーバーサイドの言語なのでブラウザの種類が関係することは基本的にありません。** PHPマニュアルに$_SERVERの定義の確認方法が書いてあるのでリンク先熟読してご自身の環境と見比べてください。 問題の切り分けに必要なことも幾つか行う必要があるかと思います。 普通にechoで文字列出力できるかとか別phpファイルがincludeできるかとか、変数を定義・出力できるかとか。 それ以前にWebサーバー(Apache)が起動しているかとかそういうことも大事です。 いっそ、いったん全てアンインストールして最初からインストールしなおしたらいいかもしれませんね。 どこかで何か必要な手順を抜かしてたりするかもしれませんが、それは今の情報からは何も分かりませんし。(LAMPということだけでは実は情報不足です)