• ベストアンサー

ファイルのパスについて

下記のような構成でプログラムを組んでいます。 ([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内で解決したいと考えています。 何か良いの解決策は無いでしょうか?すいませんがよろしくお願いします。

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

  • ベストアンサー
  • dede_nd
  • ベストアンサー率100% (3/3)
回答No.2

ini_set('include_path')を使って test_datを指定するってのはどうでしょうか? これができれば↓でどこからでも参照可能かと思います。 include_once('data.dat');

参考URL:
http://search.net-newbie.com/php/function.ini-set.html
G-606395
質問者

お礼

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

その他の回答 (1)

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.1

具体的にどうしたいのでしょうか? エラーがでなくなればいいだけなら、file_exists()でdata.datの あるなしを確認すればいいでしょう。 もし、データがみあたらない場合、探しまわる必要があるなら、 かなり複雑になるのであまりお勧めできません、そうするくらいなら 相対パスはやめて絶対パスで設定するのが妥当かと思います。

G-606395
質問者

補足

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

関連するQ&A

専門家に質問してみよう