PHP初心者で勉強中です。
書籍にて勉強をすすめていますが、
そもそも・・・と思い質問させていただきます。
$_SERVER["HTTP_HOST"]と,$SERVER["DOCUMENT_ROOT"]の違いは?
といいますか、
どういった場合にどう使いわけてらいいのでしょうか?
HTTP_HOSTのほうは、その使用例として
例えば
$url = "http://" . $_SERVER["HTTP_HOST"] . dirname($_SERVER["SCRIPT_NAME"]) . "/******.php";
といった場合につうかうそうですが、
DOCUMENT_ROOTの方は、以下のようなSmartyのテンプレート格納ディレクトリの変更の際に使うようです。(書籍の一部を抜粋しました。)
define("ROOT_DIR",$_SERVER['DOCUMENT_ROOT']."/..");
require_once("Smarty.class.php");
class MySmarty extends Smarty {
function MySmarty (){
$this->template_dir = ROOT_DIR."/templates";
$this->compile_dir = ROOT_DIR."/templates_c";
・
・
・
とても基本的な質問になっていると思いますが、
二つの違いだけでもご教授くださいませ。
宜しくお願いします。
No.4ベストアンサー
- 回答日時:
ANo.2です。
$_SERVER["DOCUMENT_ROOT"]の方、ちゃんと出力しましたか?
末尾に..がついてるのは定数ROOT_DIRの方だと思いますが。
ドキュメントルートはWeb上でのルートディレクトリを指します。これ以下のディレクトリやファイルはWeb上に公開することができます。
ところで、ROOT_DIRを..を連結して定義しているのは単にtemplatesディレクトリやtemplates_cディレクトリをC:\xampp直下に置きたかっただけでしょう。前述したようにドキュメントルート以下にあると普通にブラウザからアクセスできてしまいますからそれを避ける目的があるのだと思われます。
$_SERVER["HTTP_HOST"]はくどいようですがホスト名です。
http://www.weblio.jp/content/%E3%83%9B%E3%82%B9% …
どうもサーバ内部のパスとURLを混同しているように見受けられるのでそれを理解するのが近道かと思います。
お礼が大変遅くなってしまい、申し訳御座いませんでした。
もう、ごちゃごちゃになってるのが自分でもわかります。。。
いちから出直す気持ちでがんばります。
たぶん理解したようなきもしますので、
これからどんどん進めると、さらにふかまるかと・・・。
とにかく、! 有難うございました。!!!
No.3
- 回答日時:
ANo.2です。
とりあえず実際に出力して内容を確かめてみましょう。
その結果を比較して何がわからないのか教えてください。
この回答への補足
ご丁寧に有難うございます。
はい、
両方とも出力してパスを確認しました。
$SERVER["DOCUMENT_ROOT"] の方は、
C:/xampp/htdocs/..
となり、
$_SERVER["HTTP_HOST"] の方は、
localhost
となりました。
ん~出力してみるとわかったような気もするんですが、
・・・。
HTTP_HOSTの場合は、絶対パス的なパスが欲しいときに
http://と絡めて使用したらいいんだなとわかりました。
つまり、サーバーの場所?を教えてくれてるんですよね?
また、
DOCUMENT_ROOT の場合は、
そのDOCUMENT_ROOTの記述がある、PHPファイルまでのパス、
つまり、サーバー内部のディレクトリ関係(パス)を
教えてくれるってことですよね?
あ!もう一つ疑問があります。
C:/xampp/htdocs/..
の最後の .. は何を意味しているのでしょうか?
一番最初に質問させてもらいました例に、
define("ROOT_DIR",$_SERVER['DOCUMENT_ROOT']."/..");
とあるのですが、/.. を連結して 定義されてるからだとは
わかるのですが、
そもそも../は 「一階層上にあがる」というパスの指定方法ですよね。
なんで、$_SERVER['DOCUMENT_ROOT']" だけじゃなく、
../ を連結するんでしょう・・・。
sumartyのテンプレートへのパスをつなげると、
C:/xampp/htdocs/../templates
てな感じで、へんてこりんなテンプレートへのパスになってしまいます。(間の /../ はなんだろ? )
申し訳ございません。
本当にややこしく お見苦しい質問のしかたで。。。
宜しくお願いします。
No.2
- 回答日時:
試しに出力してみれば分かると思いますが、明らかに違うものですよね。
もしかしてDOCUMENT_ROOTではなくてSERVER_NAMEのことではありませんか?HTTP_HOSTはホスト名、DOCUMENT_ROOTはそのままドキュメントルートですという説明くらいしかないような気がしますが、一応マニュアルより説明個所を抜粋しておきます。
DOCUMENT_ROOT
現在実行されているスクリプトが存在するドキュメントルート ディレクトリです。サーバのコンフィグレーションファイルで 定義されています。
HTTP_HOST
現在のリクエストに Host: ヘッダが もしあればその内容。
この回答への補足
いえ、DOCUMENT_ROOTのことです。
そうなんです、色々しらべても、
回答にかいてくださりました、文面しかみつからず・・・。
No.1
- 回答日時:
$_SERVER["HTTP_HOST"]
これはブラウザがアクセスするときに送るヘッダーの
Host: ~
の部分が入ります。
内容はアクセスするURLがhttp://aaa/bbb/cccだとするとaaaの部分になります。
$SERVER["DOCUMENT_ROOT"]
これはサーバのhtpd.confで設定された
DocumentRoot "~"
の内容になります。
Windowsだと
DocumentRoot "C:/Program Files/Apache Group/Apache2/htdocs"
みたいな設定になりますのでこの場合は
$SERVER["DOCUMENT_ROOT"]は"C:/Program Files/Apache Group/Apache2/htdocs"になります。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(プログラミング・Web制作) mariadbでのエラー 1 2022/11/15 12:31
- UNIX・Linux ファイル・フォルダーの削除方法 2 2022/05/19 14:04
- PHP PHP & MySQL: Server-side Web Development ペーパ 1 2022/04/19 19:23
- PHP style.cssのjQuery条件付きcssが機能しない 4 2022/07/17 18:27
- UNIX・Linux Linuxについて質問です。 以下のような設定をしたMakefileを作成するにはどう記述すればよい 1 2023/02/03 20:10
- その他(プログラミング・Web制作) laravel 本番環境でメールが送れません。 1 2023/02/17 17:57
- その他(ブラウザ) グーの質問見ようとしたらブラウザ版で 3 2022/03/28 10:33
- UNIX・Linux メールアドレスにホスト名が入らないようにする設定 2 2022/06/23 21:06
- Visual Basic(VBA) Excel VBAについて、 フォルダ内のファイルを全て開きたい場合、 FSOを使えば、Dirは使わ 1 2023/01/27 13:18
- Android(アンドロイド) Androidスマホの時刻の自動同期の頻度を短くしたい 4 2022/12/02 17:29
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
FTPコマンドでディレクトリごと...
-
CFileDialogの最初のディレクト...
-
MkDir関数
-
絶対パス?絶対アドレス?意味...
-
バッチを用いたフォルダの自動移動
-
execコマンドについて
-
環境変数をMakefile内で有効に...
-
Permission denied in
-
str ! = NULL
-
ファイル選択ダイアログで選択...
-
更新日時でソートしてファイル...
-
バッチファイルで特定ファイル...
-
ファイル・ディレクトリ削除を...
-
CakePHPのファイルの所有者の権...
-
Subversionで、ファイルをリネ...
-
Subversionのリポジトリの削除
-
ファイルアップロードに関して...
-
ファイルの更新日時でのソート
-
makefile でファイルをコピーす...
-
「mkdir」について
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
FTPコマンドでディレクトリごと...
-
バッチを用いたフォルダの自動移動
-
Subversionのリポジトリの削除
-
CFileDialogの最初のディレクト...
-
現在位置より2つ上のディレク...
-
makefile でファイルをコピーす...
-
ファイルアップロードに関して...
-
fopenでファイルが開かない場合...
-
visualstudioでc#のdllができない
-
rmdirでフォルダが消せません
-
絶対パス?絶対アドレス?意味...
-
ファイル選択ダイアログで選択...
-
VB2008でFTPでのディ...
-
バッチファイルで特定ファイル...
-
JAVA内で複数のファイルを削除...
-
Subversionで、ファイルをリネ...
-
unlink「許可がありません」と...
-
[ ディレクトリ '.' は書き込み...
-
aspのページが表示できません
-
MkDir関数
おすすめ情報