2012-06-04 65 views
1

假設我正在編寫一個全局logData方法,它想寫入一個與正在運行它的php同名的日誌文件,但是它的擴展名爲.log。有沒有辦法從一個包含的頂級PHP文件的名稱?

我將這個日誌記錄包含在一個父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

而非 /一些/任意/目錄/ parent.php.log(這是我想要的)。

我正在使用__FILE__這是表現這種方式(可能是因爲它的意圖)。是否有獲取父母的文件名的命令,以便我可以按照我的意圖使其工作?或者我將不得不通過FILE作爲一個參數到我的方法從父php來讓它寫入正確的輸出文件?

TIA

+0

我不認爲這是可能的。但是,您始終可以將'__FILE__'的值作爲參數傳遞給父腳本中的全局方法。 (看你的編輯太遲了) – nickb

回答

4

你很可能在$ _ SERVER [ 「SCRIPT_FILENAME」]

+0

是的,那正是我在找的東西......非常感謝。 –

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'; 
} 
相關問題