【大喜利】【投稿~11/12】 急に朝起こしてきた母親に言われた一言とは?

PHPバージョン5.2.4を使っています。
下のような localhost/c.php とアクセスして
a.phpのf()関数をb.phpの中で使った時に、f()の中でb.phpのパスを取得したいのですが
そのような関数はあるのでしょうか?$_SERVERだとc.phpのパス(アクセスファイル)は取得できるのですが
b.phpはありませんでした。
(呼び出し先と呼び出し元が、自分の中でごっちゃになってて言い方が逆かもしれません・・・)

[a.php]
function f()
{
//ここで呼び出し元のパスを取得したい
}

[b.php] ← このファイルパスを取得したい
require_once 'a.php';
f();

[c.php] ← このファイルを実行
require_once 'b.php';

A 回答 (2件)

debug_backtrace関数を使用することで取れますよ。



参考URL:http://jp2.php.net/manual/ja/function.debug-back …
    • good
    • 0
この回答へのお礼

ご返答ありがとうございます。
なるほど、この関数はいろんな値が取れそうですね。

お礼日時:2008/02/13 20:46

そういう関数はありません。

呼び出し元で決められた変数にセットしておくなど、あくまでも「自分で管理」してください。
    • good
    • 0
この回答へのお礼

ご返答ありがとうございます。
う~ん、そうですか・・・
例えばログなどを記録する時にこういう使い方をすると思うのですが、
記録した(その関数を使った)場所も知りたいと思いました。
上の例だと次のように変更

[a.php]
function f($path, $message)
{
write('場所:' . $path . ' 内容:' . $message);
}

[b.php]
require_once 'a.php';
f('ここのファイルパス', 'エラー内容');

とすればできると思いますが、こういう書き方は良くない気がしたので
何かないかと質問しました。

お礼日時:2008/02/12 21:48

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


おすすめ情報