Finding out the filename that called my function in PHP
Try this code:
$key = array_search(__FUNCTION__, array_column(debug_backtrace(), 'function'));
var_dump(debug_backtrace()[$key]['file']);
A solution might be to use the debug_backtrace
function : in the backtrace, that kind of information should be present.
Or, as Gordon pointed out in a comment, you can also use debug_print_backtrace
if you just want to output that information and not work with it.
For instance, with temp.php
containing this :
<?php
include 'temp-2.php';
my_function();
and with temp-2.php
containing this :
<?php
function my_function() {
var_dump(debug_backtrace());
}
Calling temp.php
(i.e. the first script)
from my browser gets me this output :
array
0 =>
array
'file' => string '/.../temp/temp.php' (length=46)
'line' => int 5
'function' => string 'my_function' (length=11)
'args' =>
array
empty
In there, I have the "temp.php
" filename -- which is the one in which the function has been called.
Of course, you'll have to test a bit more (especially in situations where the function is not in the "first level" included file, but in a file included by another one -- not sure debug_backtrace
will help much, there...) ; but this might help you get a first idea...