プロが教えるわが家の防犯対策術!

include_pathを設定して、どのディレクトリからも用意にphpをインクルードできるようにしたいのですが、.htaccessへの書き方やパスの書き方があまりにもわからないので質問させていただきました。

PHPの勉強を始めたのは最近で、私の知っているパスはこれだけ。
1 http://~から始まる絶対URI?パス?
2 ./ とか ../ などの相対パス。
の2つだけ。

include_pathについて、検索エンジンで調べるとほとんどのサイトで次のように書いてありまして、私にはよく分かりません。

php_value include_path ".:/usr/local/lib/php"

まず、include_pathの書き方はこのようで良いというのはわかりましたが、/ から始まっているので、httpなくていいの?..なのか.なのかどっちなのかもわからない、初めて目にしたもので……。

PHPの勉強をしていると、よく/から始まるURLをみるのですが、これについて説明しているところが見当たらず、当り前の知識のような感じなのでしょうか?

これらについて、教えてください。

A 回答 (2件)

たくさん説明どころがあって悩ましいですね。

(笑

まず、ご自分でもなんとなく気づいている感じですが、
URLとパスは別のものだと考えてしまった方がよいと思います。

URLはインターネット上の場所を示します。
パスというときは一般に、そのマシン内にあるファイルやディレクトリの場所を示します。

次に絶対と相対の違いについて。
絶対URLや絶対パスは、省略なしで場所を示すことをいいます。
相対URLや相対パスは、現在の自分の場所から相対的に場所を示すことをいいます。

URLならば、http://で始まっていると、省略なしの絶対URLになります。
パスの場合、/から始まっていると、省略なしの絶対パスになります。

相対についてはパスの場合だけ説明してみましょう。
まず、動かしたいPHPのスクリプトが/home/sample/test.phpにあるとしましょう。
このとき、/home/sample/hoge/以下にあるphpファイルをインクルードするためには、
以下のように記述すればよいはずです。

php_value include_path "hoge"

これがスクリプトの位置から見た相対パス指定です。

相対パスの書き方にはいくつか特殊なものがあって、
自分がいるディレクトリを示すときには「.」もしくは「./」、
自分がいるディレクトリの親ディレクトリを示すときには「..」もしくは「../」
と書くことになっています。

上記のスクリプトの例でいうと、「..」は/homeディレクトリを指すことになります。

あと、Linux系の設定では、複数のパスを同時に指定する場合に、
「:」で区切る場合が多いので、include_pathでも同様なのだと思います。
    • good
    • 0
この回答へのお礼

ありがとうございます。問題解決です。
php_value include_path ".:/hoge"
と書いていたのを、
php_value include_path "hoge"
と書くことによって解決しました。

パスに関するいろいろも完全に理解することができました。本当にありがとうございます。

最後にひとつ疑問が残ったんですが、インクルードパスの書き方について、momenlaraさんに教えてもらった通りに書いたらうまく行ったのですが、他のサイトで調べたりすると次のように書けと書いていることがほとんどです。
php_value include_path ".:/usr/local/lib/php:/html/_incs_"

これはこのサイトに書いてありました。
http://www.shigeweb.jp/php/project_p/?section=se …

しかし、.:を抜くことでうまくインクルードすることができました。
これはどういうことなのでしょうか……。

お礼日時:2009/01/13 20:36

>php_value include_path ".:/hoge"


>と書いていたのを、
>php_value include_path "hoge"
>と書くことによって解決しました。

とのことなので、「.:」を抜くことでうまくいったのではなくて、
「/hoge」の「/」を抜くことでうまくいったのではないかと思います。
ためしに以下の記述でもやってみてください。

php_value include_path ".:hoge"

この指定だと、「.」と「hoge」のどちらかでインクルードファイルが見つかれば、
正しく動くはずです。

これで問題なく動いたら、以下も試してみてください。

php_value include_path ".:/usr/local/lib/php:/html/_incs_:hoge"

よくある設定に、今回、自分が設定したいディレクトリを追加しています。
    • good
    • 0
この回答へのお礼

あ、なるほど……。いろいろとごちゃごちゃとしていまい勘違いしてしまいました。良く分かりました!

すごく分かりやすい解説をありがとうございます。
一週間ほどこれについて悩んでいたので、声を出して喜びました!

今回はどうもありがとうございました。

お礼日時:2009/01/13 22:29

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!