質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.33%

  • PHP

    21413questions

    PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

PHPの$_SERVERが表示されません。

解決済

回答 3

投稿 編集

  • 評価
  • クリップ 1
  • VIEW 181

rude_rockers

score 17

phpで「$_SERVER」を使ったコードが表示されません。

ローカル環境
VagrantにLAMP環境

<?php
echo $_SERVER['PHP_SELF'];
echo $_SERVER['HTTP_HOST'];
echo $_SERVER["REQUEST_URI"];
?>

としても何も表示されません。

どなたか原因がわかる方いらっしゃいますか?

フォルダ階層は、
/var/www/html/index.php
で、
DocumentRoot "/var/www/html"
です。
実行環境はブラウザ(Google Chrome)です。

var_dump($_SERVER);

とすると「array(0) { }」とでます。

「php.ini」を変えたら動きました。
原因はこれから調査します。
ありがとうございました。

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • mts10806

    2018/12/07 09:32 編集

    そこはphpinfo()の結果を以てご提示ください。「見れるのですか?」が何を聞きたいのか分かりませんが、あなたの環境を私のPCから確認するのではなく、同じような環境を私の方で用意して確認するという意味です。

    キャンセル

  • mts10806

    2018/12/07 09:33

    あくまで「ブラウザからどのように実行しているか」の確認です。あとは私の回答の通りです

    キャンセル

  • rude_rockers

    2018/12/07 09:33

    なるほど!!!!

    キャンセル

回答 3

checkベストアンサー

+2

こういうときはPHPマニュアル確認ですね。

$_SERVER は、ヘッダ、パス、スクリプトの位置のような 情報を有する配列です。この配列のエントリは、Web サーバーにより 生成されます。全ての Web サーバーがこれら全てを提供する保障はありません。 サーバーは、これらのいくつかを省略したり、この一覧にない他のものを 定義する可能性があります。これらの変数の多くは、 » CGI/1.1 specification で定義されています。したがって、これらについては定義されていることを 期待することができます。 

太字部分確認。
まあつまり、サーバー側の設定や何かかなと。
「全てを提供する保障がない」ということは何も提供されていなければ中身はarray{}となりますよね。
$_SERVER自体はスーパーグローバル変数なので変数自体は自動で定義されているはずですが、中身はまたWebサーバーに依存するのではないでしょうか。

もちろん「他人が再現できる」情報として

  • コード
  • サーバーの種類、バージョン(サーバー構築の手法などもあれば)
  • PHPのバージョン(マイナーバージョンまで)
  • 実行の仕方 コマンドなのかブラウザからアクセスなのか。
    →コマンドなら実行のコマンド
    →ブラウザならアクセスURL

の提示は必要です(完全な再現確認にはどれか1つでも欠けてはいけません)
サーバーサイドの言語なのでブラウザの種類が関係することは基本的にありません。

PHPマニュアルに$_SERVERの定義の確認方法が書いてあるのでリンク先熟読してご自身の環境と見比べてください。
問題の切り分けに必要なことも幾つか行う必要があるかと思います。
普通にechoで文字列出力できるかとか別phpファイルがincludeできるかとか、変数を定義・出力できるかとか。
それ以前にWebサーバー(Apache)が起動しているかとかそういうことも大事です。

いっそ、いったん全てアンインストールして最初からインストールしなおしたらいいかもしれませんね。
どこかで何か必要な手順を抜かしてたりするかもしれませんが、それは今の情報からは何も分かりませんし。(LAMPということだけでは実は情報不足です)

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/12/07 09:52

    うぐう。

    ちょっとパニックです(笑)

    設定を調べまして、サンプルの通りやってましたが今までダメでした。

    で、サンプルに付いていた「コピペ用」のサンプル「php.ini」をそのままコピペしたら「/hello.php192.168.33.10/hello.php」と表示されました。

    これは望んだとおりに動いた、と捉えて良いのでしょうか?

    しかし、その設定の何が違うか調べるため、前の設定の「php.ini」を再度ペーストしても同じように「/hello.php192.168.33.10/hello.php」と表示されました。

    ・・・・???

    とりあえず、ふたつの設定をhttp://mergely.comで調べてみようと思います。

    お騒がせしました。
    「設定そのもの」というアドバイスをいただいたmts10806さんをベストアンサーに選びたいと思います。

    設定の開示は編集しておきます。

    キャンセル

  • 2018/12/07 10:02 編集

    たい焼きですか(マニアックなネタなので分からなければスルーしてください)

    > /hello.php192.168.33.10/hello.php

    ちょっと意味が分からないですね。
    質問本文ではindex.phpの話をしていたはずが急にhello.phpと。

    ひとまずphp.iniはあまり分からない段階でいじるものではないということです。設定ファイルです。1つ間違えば何も動かなくなります。
    Windowsでいうとシステムの詳細設定をいじるようなものです。
    Vargantということはコマンドで1つ1つインストールしていくものかと思いますが、
    PHPインストール段階であるもので基本的なことは大抵出来ますので。
    既にグチャグチャになってきてるようにも思いますので、最初からインストールしなおした方が良さそうに思います。

    キャンセル

  • 2018/12/07 10:02

    当たり前ですけど、php.iniを2つは貼れませんでした(笑)
    自分で調査してみます。

    設定やモードをしっかり理解していないことが原因ですね。
    質問の仕方もまた改めます。

    キャンセル

  • 2018/12/07 10:05

    すいません。
    index.phpではなかったですね。
    重要ではないと判断しましたが間違いでした。

    たい焼きは・・・・

    調べます(笑)

    キャンセル

  • 2018/12/07 10:06

    あいや古いゲームの話なので放置でいいです。ちょっと恥ずかしいツッコミをしてしまってますので。

    キャンセル

  • 2018/12/07 10:09 編集

    自分は39歳なので気になりまくりですが・・・・・(笑)
    ファミコンの「うる星やつら」で確かたい焼きを取ると得点に・・・・www

    キャンセル

  • 2018/12/07 10:24

    あら意外と私より年上の方でしたか。
    とりあえず最初のコメントの1行目と「たい焼き」で調べてみたら良いかと。
    まあ本件とは関係ないのでこのあたりで。

    キャンセル

  • 2018/12/07 10:27 編集

    把握しましたwww
    知らないゲームだった。
    今回もありがとうございましたm(_ _)m

    キャンセル

  • 2018/12/07 10:30

    解決の糸口となったようで何よりです。

    キャンセル

+2

webブラウザから実行していないからじゃないですか?


php7.1を追加インストールしたところで、
apache側の定義を直さないと、
最初に設定済みのphp5.4が呼ばれるままなんじゃないですかね。

phpがどういうモードで動作しているかわかりますか?
cgiモードなのか、モジュールモードなのか。
phpinfo()で
Server APIがCGIってなってればcgiモード、
Apache 2.0 HandlerとかApacheが書いてあればモジュールモードで、
httpd.confなどでどこを直すべきかを絞りやすくなります。

apache で phpのモジュール版とcgi版の切り替えを行ってみる | レンタルサーバー・自宅サーバー設定・構築のヒント
phpの動作モードを確認する方法 - レンタルサーバの引っ越し(番外編) – コアースのブログ

これらの記事を参考に環境設定を点検してください。

その上で、apacheにどちらのバージョンをどちらの動作モードで組み込みたいかを調べてみてはいかがかと。

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/12/07 03:30

    Google Chromでの使用ですm(__)m

    キャンセル

  • 2018/12/07 09:54

    「php7.1を追加インストールしたところで、
    apache側の定義を直さないと、
    最初に設定済みのphp5.4が呼ばれるままなんじゃないですかね。」


    まさにこれな気がします。

    勉強します!
    ありがとうございます!!

    キャンセル

  • 2018/12/07 09:56

    解決していないのにBAつけていいの?

    キャンセル

  • 2018/12/07 10:07

    ブラウザ上では解決しましたので一応BAとさせていただきます。
    原因を自分がわかっていないのが最悪ですが、php.iniにあることと、phpinfo()など知れたことが大変参考になりました。
    ありがとうございました!

    キャンセル

  • 2018/12/07 10:19

    うわ、phpinfo()って便利ですねえ!!

    キャンセル

+1

print_r($_SERVER);


で確認するところからでしょう

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/12/07 03:33

    HTTP ERROR 500

    になります。。。

    キャンセル

  • 2018/12/07 03:43

    print_r($_SERVER);

    で、「Array ( )」となりました!!
    あれ?さっきはエラーだったのに・・・

    すいません、自分の勘違いかもしれませんm(_ _)m

    キャンセル

同じタグがついた質問を見る

  • PHP

    21413questions

    PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。