![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?8acaa2e)
PHP初心者です。
現在、winxp pro sp2でapache2.0.54とPHP4でサイトを作っているのですが、PHPファイルの基本的な階層構造(ファイルの置き方)やこうした方が良いという方法はありませんでしょうか?
例)
htdocs(DocumentRoot)
┣proc
┃┗regist_check.php(登録内容の入力チェック用)
┣index.php
┣top.php
┣regist.php
┗.htaccess
今現在、上のような階層になっています。
「http://自分のURL/proc/」
このようにアクセスされる分にはapache側でアクセス出来ないようになっていますが、
「http://自分のURL/proc/regist_check.php」
このようにチェック用のPHP等に直接アクセスされると非常に困るのですが、こういったことを回避するにはどういう方法がよろしいでしょうか?
よろしくお願い致します。
No.2ベストアンサー
- 回答日時:
実際今試してみました。
実験環境は以下の通りです。
Fedoracore3 Linux
apache2.0.52
PHPのバージョンは同じく4だったと思います。
階層は以下の通り
/(ルート)
├home(ユーザー用全体ディレクトリ)
├user(ユーザーのホームディレクトリ)
│ ├public.html(webで見られるドキュメントルート)
│ │ └test.php(呼び出し側スクリプト)
│ └vars1.php(呼び出されるデータ1)
└vars2.php(呼び出されるデータ2)
(分かりにくくて申し訳ありません。)
結果から言うと私の環境下では所有者をルートでもユーザーでも
homeディレクトリ直下までは呼び出しが出来ます。
ただしドキュメントルートより上に置くことは
セキュリティの関係からもあまり賢明ではないと思われます。
もし呼び出したいPHPスクリプトがあるなら
ドキュメントルート直下に何かディレクトリを作って(./include/等)
まとめておけば良いのではないでしょうか?
また、管理者がユーザー制限を厳密にやっていれば
呼び出すことも出来ないかと思われます。
いずれにしろ、stupid_honeyさんの環境が分かりませんので
断言はできませんが可能ではあるということで宜しいでしょうか。
お返事が遅くなりまして申し訳ありません。
色々と試したのですが、includeするものに関してはドキュメントルートより上の階層にphpスクリプトを設置しても呼び出せました。よってブラウザから直にアクセスすることは不可能になりました。
とりあえずの手段としては、スクリプトを呼び出す側で値をPOSTする際にhidden等に持たせて、呼び出される側でどこから呼ばれたのかを判断するようにしました。
No.1
- 回答日時:
.htaccessで任意ディレクトリに直接パスワードなりIP制限なりかけるのも手ですが
折角PHPを使うのでしたらスクリプトにその機能を含ませたらどうでしょう。
参考URL:http://www.shtml.jp/htaccess/
早速のご回答ありがとうございました。
とりあえずの対策として、.htaccessでアクセスされたくないディレクトリは認証制限を設けました。
あと、PHPファイル自体をドキュメントルートより上の階層に置いてrequire等で呼び出すことはできるのでしょうか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- PHP どうして送信されないのでしょうか? 1 2022/12/09 05:23
- PHP WordpressのPHPを安全に編集する方法 1 2022/08/04 01:43
- PHP eclipse pleiades phpのインストールについて 1 2023/02/03 17:15
- PHP 秀丸でPHPの構文チェック(SyntaxCheck)を行う方法 1 2022/09/11 16:46
- PHP PHP ページング データベース 1 2022/06/16 10:30
- PHP PHP MySql ページング 2 2022/09/20 06:38
- PHP 掲示板を作成しておりアップロードファイルとメッセージを並べたいので、アドバイスお願い致します 2 2023/07/17 21:01
- サーバー Laravelをレンタルサーバーにインストールするにはどうすればいいですか? 2 2022/06/29 10:17
- その他(プログラミング・Web制作) .htaccessファイルの修正がこれで問題ないかどうか 1 2022/04/21 08:42
- MySQL MySQL,JavaScript,PHPコードの結果を表示する方法を教えてください。 1 2023/02/13 17:49
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
CFileDialogの最初のディレクト...
-
Subversionのリポジトリの削除
-
バッチを用いたフォルダの自動移動
-
FTPコマンドでディレクトリごと...
-
visualstudioでc#のdllができない
-
posix_getpwuid()の使い方を知...
-
str ! = NULL
-
rmdirでフォルダが消せません
-
現在位置より2つ上のディレク...
-
DLL のロードの順序
-
バッチファイルで特定ファイル...
-
unlink「許可がありません」と...
-
includeが出来ない訳とは?
-
【BAT(バッチ)ファイル】Web...
-
renameでのPermission deniedエ...
-
Smartyのtemplatesとtemplates_...
-
絶対パス?絶対アドレス?意味...
-
Smarty includeでテンプレート...
-
ファイル・ディレクトリ削除を...
-
ファイルアップロードに関して...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
バッチを用いたフォルダの自動移動
-
CFileDialogの最初のディレクト...
-
Subversionのリポジトリの削除
-
FTPコマンドでディレクトリごと...
-
【BAT(バッチ)ファイル】Web...
-
現在位置より2つ上のディレク...
-
makefile でファイルをコピーす...
-
fopenでファイルが開かない場合...
-
MkDir関数
-
visualstudioでc#のdllができない
-
絶対パス?絶対アドレス?意味...
-
DLL のロードの順序
-
includeが出来ない訳とは?
-
VB.NET 最下位のディレクトリ名...
-
rmdirでフォルダが消せません
-
ファイル選択ダイアログで選択...
-
C言語でのディレクトリ作成につ...
-
aspのページが表示できません
-
ディレクトリの正規表現について
-
拡張子を隠すのは良い事なので...
おすすめ情報