1

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

我将此日志记录包含在父 php 中,目的是让它始终写入日志文件,无论 *父文件名是什么(而不是它所在的 tools.php 库)。

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

调用

包括(“/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

4

3 回答 3

5

您可能会使用 $_SERVER["SCRIPT_FILENAME"]

于 2012-06-04T03:59:50.823 回答
2

debug_backtrace() 会给你你需要的。

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

于 2012-06-04T03:58:11.573 回答
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';
}
于 2012-06-04T03:59:33.280 回答