我有一个log()方法,并希望记录调用它的脚本的名称。这怎么可能在PHP?
答案 0 :(得分:10)
根据调用环境,您应该查看debug_backtrace和$_SERVER['PHP_SELF']
到目前为止, debug_backtrace()
将为您提供包含和函数调用的堆栈跟踪,$_SERVER['PHP_SELF']
将告诉您当前正在执行的脚本,这更容易,并且可能同样适用于您想要的内容。 $_SERVER['PHP_SELF']
几乎总是从浏览器调用的脚本,例如,如果您blah.com/admin.php
和blah.com/articles.php
都调用/pages.php
来获取列表保存在博客或其他内容中的页面出现问题 - 日志会告诉您admin.php
或articles.php
是否正在调用脚本。但是,如果pages.php
包括functions.php
并且libs.php失败,并且您想知道libs.php
包含它,那么这将无效 - 日志会仍显示启动包含的脚本(functions.php
或admin.php
)。在这种情况下,您将使用articles.php
。
答案 1 :(得分:3)
你可以看一下debug_backtrace
函数:在它的输出中,你应该找到你要找的东西; - )
您可以查看我几天前发布的this answer,了解更多信息和示例。
答案 2 :(得分:2)
$backtrace = debug_backtrace();
print_r($backtrace[1]);
答案 3 :(得分:0)
使用debug_backtrace()获取包含完整callstack的关联数组,并检查数组以从中获取您感兴趣的详细信息。
答案 4 :(得分:0)
除了已经给出的答案,一个非常低技术的答案将是或附加 _ _ FILE _ _或basename()到正在记录的字符串。 (必须在FILE中添加空格以加倍下划线才能显示)