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

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

新規登録して質問してみよう
ただいま回答率
85.50%
Apache

Apacheは、Apache HTTP Serverの略で、最も人気の高いWebサーバソフトウェアの一つです。安定性が高いオープンソースソフトウェアとして商用サイトから自宅サーバまで、多くのプラットフォーム向けに開発・配布されています。サーバーソフトウェアの不具合(NCSA httpd)を修正するパッチ(a patch)を集積、一つ独立したソフトウェアとして開発されました。

PHP

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

Q&A

3回答

2823閲覧

htaccessを使ってドキュメントルートを操作する方法

puser3541

総合スコア19

Apache

Apacheは、Apache HTTP Serverの略で、最も人気の高いWebサーバソフトウェアの一つです。安定性が高いオープンソースソフトウェアとして商用サイトから自宅サーバまで、多くのプラットフォーム向けに開発・配布されています。サーバーソフトウェアの不具合(NCSA httpd)を修正するパッチ(a patch)を集積、一つ独立したソフトウェアとして開発されました。

PHP

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

0グッド

0クリップ

投稿2018/05/03 21:06

編集2022/01/12 10:55

例えばhtaccessに以下のように書かれてますが、これはhtaccessを置いたディレクトリの中のファイルにアクセスした時に読み込むファイルを記述しているだけではないのでしょうか。
しかしhtaccessを書き換えると実際にドキュメントルートが変更されました。
これはどういう仕組みになっているのでしょうか。

php_value include_path .:/LIbrary/Webserver/Documents/saitama/include:/LIbrary/Webserver/Documents/saitama/include/test:/LIbrary/Webserver/Documents/saitama/include/settings php_value auto_prepend_file /LIbrary/Webserver/Documents/saitama/include/init.php

(init.php)

require_once "class.php"; $_GET = protector_sanitize($_GET) ; $_POST = protector_sanitize($_POST) ;

(追加)
他の文字列になっていたところを上記のようにsaitamaに変えるとドキュメントルートが変更されました。

(class.php)

define('tokyo-mail', 'example@ls.jp'); define('primary-wordS', 'band,tokyo,kanto,minato'); define('num_directories', 12);

(index.php)

$ms = new box(); $center = centerquery(2); $tok = new tok(); include_once('class'.'.php'); HtmlTemplate::t_include($tokyo->test, $west->yokohama); exit();

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

otn

2018/05/03 23:28

あなたの主観でなく、客観的な事実が欲しいところです。「それまではドキュメントルートでアクセスしたら何も表示されなかったのが表示されるようになりました。」とは、「http://ホスト名/ でアクセスしたら404エラーになっていたのが、ページが表示されるようになった」という意味でしょうか?
退会済みユーザー

退会済みユーザー

2018/05/04 02:39 編集

質問者さんの言うドキュメントルートとはなにか、を自分の言葉で質問内に追記してください。一般的な用語集に掲載されている内容と同じ認識であればそのページを示すだけでもいいです。察するに、ドキュメントルートとインクルードパスをごっちゃにしていませんかね。
puser3541

2018/05/04 04:10

ドキュメントルートは、ホスト名=「〜.com」でアクセスしたときに表示されるパスという意味で使いました。 404エラーかどうかわかりませんが、htaccessを修正する前は真っ白な画面だったと思います。
guest

回答3

0

ドキュメントルートは、ホスト名=「〜.com」でアクセスしたときに表示されるパスという意味で使いました。 404エラーかどうかわかりませんが、htaccessを修正する前は真っ白な画面だったと思います。

ということであれば、ドキュメントルート云々は勘違いです。
単に、環境設定がチャンとされていないときにはPHPプログラムが空白ページを表示していたのが、正しく環境設定すると正常に動くようになったと言うことです。

投稿2018/05/04 13:24

otn

総合スコア84423

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

puser3541

2018/05/04 23:12

saitamaの部分を書き換えるだけですが、その部分がそれ以外の文字列の時は空白を表示というPHPが書かれているということでしょうか。 空白ページだったのか、このページはありませんのような存在しないURLを指定した時に表示される画面だったかよく覚えていないのですがどちらの場合にしてもそういうことなのでしょうか。
otn

2018/05/05 01:09

> よく覚えていないのですが 確認してください。
puser3541

2018/05/05 01:15

今はちょっと無理です。 その部分が焦点なのでしょうか?
otn

2018/05/05 01:22

ドキュメントルート云々は勘違いなのは明かですが、あなたがそれをどうやって理解するのかというのが今の問題だと思います。なので、焦点かどうかはあなた次第です。
puser3541

2018/05/05 01:23

ドキュメントルートについての勘違いとは具体的にはどの部分のことでしょうか。
otn

2018/05/05 01:25

> しかしhtaccessを書き換えると実際にドキュメントルートが変更されました。 です。
puser3541

2018/05/05 01:30

ということはドキュメントルートはhtaccessを書き換えた後でも変更されていない、ということですよね。 その場合、どうして書き換えるとブラウザ上の表示が変わるのでしょうか。
otn

2018/05/05 01:39

PHPプログラムの動作が変わるためです。
puser3541

2018/05/05 01:57

どこで動作を切り替えているのでしょうか。
otn

2018/05/05 03:11

> どこで動作を切り替えているのでしょうか。 PHPプログラムですね。 切り替えているというより、正常動作が出来なくて空白になっているのだと思いますが。
puser3541

2018/05/05 03:22

そのプログラムのどのような処理で空白を出しているのかが知りたいのですが。
otn

2018/05/05 03:42 編集

プログラムを読んでください。プログラムの動作を知りたかったら、読むしかないです。
puser3541

2018/05/05 03:53

読み込まれてるPHPは読んでますが、それでもよくわからないのでここで質問してます。
otn

2018/05/05 04:30

コードが無いと誰もこれ以上のアドバイスは出来ないと思います。
puser3541

2018/05/05 04:38

他に提示していないコードとはどの部分のことでしょうか。
otn

2018/05/05 12:36

見ようとしているページのPHPコードです。index.php とかかな?
puser3541

2018/05/05 20:00

index.php追記しました。
guest

0

いえ、php_valueはapache設定ファイルに変更をあたえる指定です。

nameの指定を変更しています。

どのように確認されたのか分かりませんが、
提示の指定だけではドキュメントルートは変更していないように思います。

include_pathについて

require、include、 fopen()、file()、 readfile() および file_get_contents() 関数がファイルを 探すディレクトリのリストを指定します。

auto_prepend_fileについて

メインファイルの前に自動的に付加されるファイルの名前を指定します。 このファイルは、require 関数のコール時と同様に読み込まれます。 このため、include_path が使用されます。

auto_prepend_fileに指定されている下記のPHPファイルの内容次第なところもあるのでは。
/LIbrary/Webserver/Documents/saitama/include/init.php

投稿2018/05/03 21:25

m.ts10806

総合スコア80765

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

puser3541

2018/05/03 21:49

コメントありがとうございます。 init.phpは修正した通りなのですが、それらしい記述は見当たりません。 init.phpから読み込まれているclass.phpにもそれらしい記述は見当たりませんでした。 ドキュメントルートが変更されたということ自体、私の勘違いでしょうか。
m.ts10806

2018/05/03 21:54

回答にも書いていますが、どうしてドキュメントルートが変更されたと思ったのでしょうか? 確認の手法や根拠を記載してください。
puser3541

2018/05/03 22:13

上記にも書いたのですが、saitamaの部分を書き換えただけでドキュメントルートが変わりました。 変わったというか、それまではドキュメントルートでアクセスしたら何も表示されなかったのが表示されるようになりました。
puser3541

2018/05/03 22:20

あ、それとなのですが関係があるかわからないのですがhtaccessの記述がマークダウンのやり方を間違ったのか一部しか表示されてなかったのでそこも修正しました。
m.ts10806

2018/05/03 23:19 編集

なぜ今回の質問に至ったのか、その背景や、目的部分をもう少し具体的に質問に追記してもらえれば それに合った回答やアドバイスができます。 「ただなんとなくやってみた」だとあまり意味がありません。
puser3541

2018/05/04 23:15

知人が運用しているwebサイトに関わったのがきっかけです。 htaccessを言われた通りに修正したらドキュメントルートが正常にトップページになったので仕組みが知りたいと思った次第です。 目的はhtaccessがどうやってドキュメントルートを操作しているのか知りたいということです。 ※その知人に直接聞くことはいろいろな事情により難しいのでこちらでお聞きしてます
m.ts10806

2018/05/05 00:11

既にある通り.htaccessだけでドキュメントルートの操作をしているわけではありません。 include_path を指定してinit.phpをprependで読ませているだけです。 そのinit.phpからclass.phpを読んでいるので、更に追っていく必要があるかと。 「それらしい記述が見当たらない」とのことでしたが、本当にそうでしょうか。 動的に切り替えているのであれば、ただ読んだだけでは(あと初学者とかでは)分からないような書き方をしている可能性があります。 提示可能な範囲で全て提示された方が良いかと思います。 あと、蛇足ですが、 この質問は何をゴールとするのか分からなくなってきてます。
puser3541

2018/05/05 00:47

class.php追記しました。 ゴールはタイトルの通りですがhtaccessでドキュメントルートをどうやって操作しているのかを把握することです。
guest

0

php_value auto_prepend_file /LIbrary/Webserver/Documents/saitama/include/init.php

で、ドキュメントルートに配置されたファイルが読み込まれる前にinit.phpが読み込まれて処理されます。
init.phpにドキュメントルートを変更するのと同様の処理が書かれているのでしょう。

投稿2018/05/03 21:22

tanat

総合スコア18709

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

puser3541

2018/05/03 21:50

コメントありがとうございます。 init.phpは修正した通りなのですが、それらしい記述は見当たりません。 init.phpから読み込まれているclass.phpにもそれらしい記述は見当たりませんでした。 ドキュメントルートが変更されたということ自体、私の勘違いでしょうか。
tanat

2018/05/03 22:03 編集

原理的にドキュメントルートが.htaccessで変更されることはあり得ないので、(ブラウザから見た場合に、ある条件下でドキュメントルートが変更されたかのように見せることは可能) 何をもってドキュメントルートが変更されたと思ったのかを追記されると良い回答が得られるかと思います。
puser3541

2018/05/03 22:13

確かにそうでした。 上記にも書いたのですが、saitamaの部分を書き換えただけでドキュメントルートが変わりました。 変わったというか、それまではドキュメントルートでアクセスしたら何も表示されなかったのが表示されるようになりました。
puser3541

2018/05/03 22:19

あ、それとなのですが関係があるかわからないのですがhtaccessの記述がマークダウンのやり方を間違ったのか一部しか表示されてなかったのでそこも修正しました。
tanat

2018/05/03 22:31

> 変わったというか、それまではドキュメントルートでアクセスしたら何も表示されなかったのが表示されるようになりました。 これだけだと第三者にはほぼノーヒントになってしまっています。 表示されなかった時のエラーログを読んでみると、なぜ動くようになったのかがわかると思います。 多分、class.phpの中で何かしているか、ドキュメントルート配下のindex.phpがinit.phpの読み込みを行わないとエラーが出る仕様なんだと思います。
puser3541

2018/05/04 23:20

htaccessを修正していないときはブラウザ画面が白い画面又はこの画面はありませんのような存在しないホスト名を指定した画面になるだけです(白い画面なのか存在しませんのような画面なのかははっきり覚えてないです。すみません。)。 class.phpは特に関係ないと思われることが少し書かれていただけなので今回の設定とは関係してないと思います。 saitamaに書き換えただけで、トップページを表示するためのPHPが呼び出され、最終的にトップページのhtmlが表示されてるのでそうした指定をどこかでしていると思うのですが。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問