PHPの質問です。


サイトで
folderroot
 indexroot.php
 folderA
indexA.php
 folderB
indexB.php
folderC
module.php
image.gif
のようなサイト構成だったとします。

module.phpでは、「image.gif」を参照しています。

このケースで、indexA.phpとindexB.phpからのみmoduleを呼び出すときは、「readfile ("../folderC/module.php")」として、module.phpでは、「../folderC/iamge.gif」を参照すればいいと思います。

このケースで、indexroot.phpからもmodule.phpを呼び出して、image.gifを正常に表示させるための手段はあるのでしょうか。

お手数ですが教えていただけると助かります。

回答の条件
  • 1人5回まで
  • 13歳以上
  • 登録:2012/12/24 19:12:00
  • 終了:2012/12/31 19:15:03

回答(2件)

id:oil999 No.1

oil999回答回数1728ベストアンサー獲得回数3202012/12/24 19:32:24

ポイント50pt

module.php で同様に、"../folderC/iamge.gif" を参照すればよいのです。

readfile 関数は、呼び出したPHPファイルが存在するディレクトリから見た相対呼び出しになります。
ご質問のケースでは "indexroot.php" から "iamge.gif" の相対呼び出しをすることになりますから、"../folderC/iamge.gif" を参照すればよいのです。

id:suuui

現状での呼び出しは
indexroot.php ⇒ module.php ⇒ image.gif(HTMLに記述)
indexA.php ⇒ module.php ⇒ image.gif(HTMLに記述)
indexB.php ⇒ module.php ⇒ image.gif(HTMLに記述)
このときの、module.phpの記述方法が分からないので。

2012/12/24 20:04:16
id:oil999

回答したように、いずれの場合も呼び出し元のPHPファイル(module.phpではない)の位置からの相対アドレス指定になりますので、HTML記述は下記のようになります。

<img src="../folderC/image.gif" />
2012/12/25 09:24:38
id:cno No.2

cno回答回数124ベストアンサー獲得回数122012/12/24 20:06:41

ポイント50pt

参照用途のソースコードで他の参照がある場合は
例示のサンプルmodule.phpの場合、includeを
「include dirname(__FILENAME__)."/image.gif"」
と宣言すればよろしいかと思います。

dirnameは指定したファイルのパスを取得する関数、
__FILENAME__はソースファイルの絶対名を表す組み込み定数です。
この書き方でどこからincludeしてもincludeされたソース内の
includeは宣言されたソースのパスを元に指定するようになり、
include元ではパスのいちを考慮しなくて済むようになります。

詳細は下記のページが参考になるかと思います。
http://suin.asia/2009/02/18/getcwddirname-file.html

id:suuui

oil999さん、cnoさん、たすかりました。ありがとうございました。

2012/12/24 20:34:21

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません