誕生日にもらった意外なもの

下記のような構成でプログラムを組んでいます。
([d]=ディレクトリ、[f]=ファイル)

test[d]
├ test_dir[d]
│ └ index2.php[f]

├ test_dat[d]
│ └ data.dat[f]

├ index.php[f]
└ common.inc[f]

common.incにはindex.php、index2.php双方で使う共通関数が入っており、data.datのデータを読み込みます。
その際に、common.incの中でdata.datへのパスを"./test_dir/data.dat"設定しておくと、index2.phpでは「No such file or directory」と言われます。
有用な情報かは分かりませんが、common.incの読み込みにはinclude_onceを使用しています。

index2.phpから見ると当然そのパスは存在しないので理屈は分かりますが、解決方法が思い浮かびません。
引数でdata.datへのパスを渡せば問題なく動くと思いますが、出来ればcommon.inc内で解決したいと考えています。
何か良いの解決策は無いでしょうか?すいませんがよろしくお願いします。

A 回答 (2件)

ini_set('include_path')を使って


test_datを指定するってのはどうでしょうか?

これができれば↓でどこからでも参照可能かと思います。
include_once('data.dat');

参考URL:http://search.net-newbie.com/php/function.ini-se …
    • good
    • 0
この回答へのお礼

こんな方法があるんですか。
ちょっと挑戦してみます。
ありがとうございました。

お礼日時:2007/03/23 19:14

具体的にどうしたいのでしょうか?



エラーがでなくなればいいだけなら、file_exists()でdata.datの
あるなしを確認すればいいでしょう。

もし、データがみあたらない場合、探しまわる必要があるなら、
かなり複雑になるのであまりお勧めできません、そうするくらいなら
相対パスはやめて絶対パスで設定するのが妥当かと思います。

この回答への補足

言葉足らずですみません。
現在、引数無しの関数内でパスを設定しているのですが、どのファイルから参照しても読込処理が出来るような共通関数を作成したいと考えています。

補足日時:2007/03/22 17:41
    • good
    • 0

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