• ベストアンサー

呼び出し元のファイル名を取得したい

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';

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

  • ベストアンサー
  • tecinfo
  • ベストアンサー率52% (32/61)
回答No.2

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

参考URL:
http://jp2.php.net/manual/ja/function.debug-backtrace.php
takagoo100
質問者

お礼

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

その他の回答 (1)

  • shimix
  • ベストアンサー率54% (865/1590)
回答No.1

そういう関数はありません。呼び出し元で決められた変数にセットしておくなど、あくまでも「自分で管理」してください。

takagoo100
質問者

お礼

ご返答ありがとうございます。 う~ん、そうですか・・・ 例えばログなどを記録する時にこういう使い方をすると思うのですが、 記録した(その関数を使った)場所も知りたいと思いました。 上の例だと次のように変更 [a.php] function f($path, $message) { write('場所:' . $path . ' 内容:' . $message); } [b.php] require_once 'a.php'; f('ここのファイルパス', 'エラー内容'); とすればできると思いますが、こういう書き方は良くない気がしたので 何かないかと質問しました。

関連するQ&A