有没有办法从包含的文件中获取顶级PHP文件的名称?

时间:2012-06-04 03:48:14

标签: php

让我们说我正在编写一个全局logData方法,该方法想要写入一个与运行它的php同名的日志文件,但扩展名为.log。

我在父php中包含此日志记录,目的是让它始终写入任何*父文件名的日志文件(而不是它所在的tools.php lib) )。

所以,我有 /some/arbitrary/directory/parent.php

调用

include(" /path/to/my/php/libs/tools.php");

但是当我在tools.php中运行我的日志记录方法时,它会记录到一个名为

的文件中

/path/to/my/php/libs/tools.php.log

而不是 /some/arbitrary/directory/parent.php.log(这就是我喜欢的)。

我正在使用__FILE__这样做(可能与其意图一样)。是否有获取父文件名的命令,以便我可以按照我的意图使其工作?或者我是否必须将 FILE 作为参数从父php传递到我的方法中以使其写入正确的输出文件?

TIA

3 个答案:

答案 0 :(得分:4)

您可以使用$ _SERVER [“SCRIPT_FILENAME”]

答案 1 :(得分:2)

debug_backtrace()将为您提供所需的信息。

http://php.net/manual/en/function.debug-backtrace.php

答案 2 :(得分:0)

您需要将__FILE__传递给日志类。

类似的东西:

// file:/some/arbitrary/directory/parent.php
$logger = new Logger(__FILE__);


// file:/path/to/my/php/libs/tools.ph
public function __construct($file) {
  // But it is not good idea to save log file same with php files.
  $this->log_path = $file.'.log';
}