• ベストアンサー

includeするファイルの直接呼出しを避けたい

phpにて、includeしているファイル(仮にxxx.incとします)を直接URL指定された場合、エラーとしたいのですが、どのような手段がありますでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • php504
  • ベストアンサー率42% (926/2160)
回答No.1

見られたくないファイルはWebサーバのDocument rootの外に置くのが基本だと思います。 それが無理なら.htaccessで制限ですね。 .htaccessも使えない場合はCGIの動いているサーバなら拡張子を.cgiにすれば直接アクセス時にエラーになりますね。 includeされる内容によっては拡張子を.phpにしておけば中身を見られない場合もありますが。

noname#257070
質問者

お礼

ご回答ありがとうございました。 Document rootの外はちょっと厳しいので、ヒントいただいた「.htaccess」をググって、ちょうどいいサイトを見つけました。 http://www.shtml.jp/htaccess/data.html ここで、特定の拡張子を持つファイルをブラウザで閲覧できないようにする方法を知り、試してみたところ望みどおりの結果となりました。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • includeができない

    includeでおかしな動きがあり、困っています。 ●ケース1 include ("check.php"); こちらは問題なく稼働します。 ●ケース2 include ("http://xxx.com/check.php"); この書式だと動作しません。 ちなみに、ケース1の場合も、実行ファイル、includeするファイルとも、 http://xxx.com/ 配下に存在しています。 ケース2のように、URL表記で外部ファイルを取り込むようにするには どうすればよろしいのでしょうか? よろしくご指導お願いいたします。

    • ベストアンサー
    • PHP
  • includeでのローカルファイルの呼び出しについて

    いろいろやってみて原因が全くわからなかったので、わかる方はご回答願えますと幸いです。 PHPでランダムで文字を表示するスクリプトを作り、下記のように設置して問題なく表示出来ていました。(右の数字はパーミッションです) /home(755) │└index.php(644) /random(755)  ├random.php(644)  └random.txt(606) random.phpでrondom.txt内のデータをランダムに取り出して表示させ、その内容をindex.phpに <? include("http://xxxxx.xxx/random/random.php");?> と呼び出しを行っていました。 しかしサーバー管理者に外部ファイルの呼び出しは高負荷がかかるのでローカルからの呼び出しに変更してほしいと連絡を受け、 <? include("./random/random.php");?> のように修正を行ったところ、以下のようなエラー文が吐き出されてしまいました。 Warning: file(random.txt) [function.file]: failed to open stream: No such file or directory in /xxxxxxxx/random/random.php on line 2 このエラーの回避方法についてご存じの方がいたらご教授願えればと思います。

    • ベストアンサー
    • PHP
  • INCLUDE VIRTUALで読み込むファイルのパス

    <!--#INCLUDE VIRTUAL="/xxx.html"-->でメニュー部分などを1つのHTML(xxx.html)で読み込みたいです。ただ、メニュー部分のHTML側の画像URLなどを相対パスで記載したすると<!--#INCLUDE VIRTUAL="/xxx.html"-->を記載するファイルに階層が異なるものがあったときには、パスが違ういうことになってしまいます。(xxx.html自体は読み込めるのですが、画像URLなどが異なってしまう)これは絶対パスで記載するしかないのでしょうか?

    • ベストアンサー
    • HTML
  • phpの(例えば)include

    phpでwebアプリを作成しています。 例えば、windowsでいうiniファイルに似たようなファイルを作成し、 そのファイルにdbopen情報を持たせてopenしたいのです。 global変数を使うということで、試しているのですが、うまくいきません。  ※postgresqlを使っています。 ・sysparm.inc <?php $inf1="1111"; $inf2="user"; $inf3="pass"; $inf4="name"; ?> ・dbaccess.php <?php include ("./include/sysparm.inc"); $dbinfo = "port=".$inf1 . " user=".$inf2." password=".$inf3." dbname=".$inf4;   ・   ・   ・ この$dbinfo 情報でopenしたいのですが、$inf1~$inf4まで何もはいってきません。 こういう場合、dbaccess.phpの $inf1~$inf4 まで”global" をつけるんでしょうか? つけて試したのですが、入ってきませんでした。 この方法は、windows版で言う GetPrivateProfileString・・・の用なことをしたくてたどり着きました。 最初はファイルを読んで、dbアクセス情報を取得していたのですが。。。 結局includeされていないのでしょうか? includeのパスの指定も dirname(__FILE__)."/include/sysparm.inc" のようにしてみてもだめでした。 どんな書き方、使い方が正解なのか、教えていただけないでしょうか? すみません、よろしくお願いいたします。

    • ベストアンサー
    • PHP
  • インクルードファイルからの相対パス

    main.php: <?php include('x/sub.php'); ....... ?> x/sub.php: <?php $a=file('data.txt'); ....... ?> において data.txt は main.php と同じディレクトリになければなりません インクルードされたファイルからファイルを呼び出すときに インクルード先からの相対パスでファイルを指定できるようにできないでしょうか? つまり上の場合にはdata.txtがsub.phpと同じディレクトリにあるようにです

    • ベストアンサー
    • PHP
  • includeしたファイルに変数を持ち込むには?

    hoge.phpでセットした変数を、そのあとにincludeした別ファイルに持ち込むことは出来るのでしょうか? 以下のような処理がしたいと思っているのですが、この状態でhoge.phpを実行すると$a=NULLとして処理されてしまいます。 inc.php  <?php    if ($a=="値") {     //TRUE処理    } else {     //FALSE処理    }  ?> hoge.php  <?php   $a = "値";   include "./inc.php";  ?>

    • 締切済み
    • PHP
  • includeと#include

    他の人が書いた拡張子が.aspとなっている ファイルを眺めているのですが、その中に <!-- #include file="./Include/aaa.inc" --> <!-- include file="./Include/bbb.inc" --> という2種類の記述が存在していました。 前者は相対ディレクトリ指定でaaa.incというファイルを 読み込んで処理すると理解しておりますが 後者も同じ動作をするものなのでしょうか? 実行環境が手元にないため試すことも出来ず Net上を検索してもこれといったものが見つかりません。 どなたかご教授お願いします。

  • [ASP]条件によってインクルードしたいファイルを変えたい。

    こんばんわ。ASPにてWebページを作っております。 私はこれまで、何度もASPページ内に任意の.incファイルをIncludeして動的なWebページを作ってまいりました。 しかし、いままでは固定の.incファイルをIncludeしてきましたので下記のように、 <!-- #Include File="info.inc" --> 記述していました。 今回は・・・ sample.asp?ID=1 や sample.asp?ID=2 のようにURLに付加されて送信されてくる情報によってIncludeしたいファイルを変更しなければいけません・・・。 この場合はどのように記述してやればいいでしょうか? <% If Request("ID") = "1" Then %> <!-- #Include File="pageA.inc" --> <% ElseIf Request("ID") = "2" Then %> <!-- #Include File="pageB.inc" --> <% End If %> 単純に上のようなことでいいのでしょうか? お手数をお掛けしますが何卒宜しくお願いいたします。

  • includeでファイルが呼び出せない…

    ある日突然includeでファイルが呼び出せなくなりました。 include("http://hoge.com/test.php"); 下記のようなエラーになります。 Warning: main(): php_network_getaddresses: getaddrinfo failed: Temporary failure in name resolution (is your IPV6 configuration correct? If this error happens all the time, try reconfiguring PHP using --disable-ipv6 option to configure) in……… include("./test.php"); このように相対パスであれば呼び出せます。 なぜなのでしょうか…他のドメインから呼び出せないので困っています…

    • 締切済み
    • PHP
  • include時の頭の良いパス指定について

    include時の頭の良いパス指定について 長い上に少々わかりにくい話ですが、includeする場合のパスについてです。 現在の構成は次のとおりです。 / ├inc/ │ ├file_a.class.php │ ├file_b.class.php │ ├file_c.class.php │ │ │ └require/ │   └require.php ├dir/ │└index.php │ └index.php 【/index.phpの中身】 <?php  require_once "./inc/require/require.php";  //その後いろいろ処理 ?> 【/inc/require/require.phpの中身】 <?php  require_once "./inc/file_a.class.php";  require_once "./inc/file_b.class.php";  require_once "./inc/file_c.class.php"; ?> 今回後付で、「/dir/index.php」を設置しました。 「/index.php」とほぼ処理は共通なので、「/dir/index.php」を次のように書いています。 【/index.phpの中身】 <?php  require_once "../index.php"; ?> しかし、この場合「/dir」以下からは、incまでの階層が異なるため、includeしても、 各クラスのファイルを読み込むことができず、 No such file or directory in require.php on line 2 のエラーが表示されてしまいます。 こういう場合、どういうパス指定をするのがいいのでしょうか。

    • ベストアンサー
    • PHP