Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How can I get the name of the script that called a function?

Tags:

php

I have a log() method and want to log the name of the script that called it. How is that possible in PHP?

like image 261
openfrog Avatar asked Dec 27 '09 21:12

openfrog


3 Answers

Depending on the calling environment, you should have a look at debug_backtrace, and $_SERVER['PHP_SELF']

debug_backtrace() will give you a stack trace of the includes and function calls so far, and $_SERVER['PHP_SELF'] will tell you the currently executing script, which is easier and might work just as well for what you want. $_SERVER['PHP_SELF'] will pretty much always be the script that was called from the browser, for example, if you had blah.com/admin.php and blah.com/articles.php that both called /pages.php to get a list of the pages saved in a blog or something, and something went wrong -- the log would tell you whether admin.php or articles.php was calling the script. But if pages.php included functions.php which included libs.php and libs.php failed, and you wanted to know that functions.php included it, this wouldn't work -- the log would still show the script that started the including (admin.php or articles.php). In this case you would use debug_backtrace().

like image 110
Carson Myers Avatar answered Nov 10 '22 23:11

Carson Myers


You can take a look at the debug_backtrace function : in it's output, you should find what you are looking for ;-)

You can take a look to this answer I posted a couple of days ago, for more informations, and an example.

like image 20
Pascal MARTIN Avatar answered Nov 10 '22 23:11

Pascal MARTIN


Take a look at debug_baktrace.

$backtrace = debug_backtrace();
print_r($backtrace[1]);
like image 2
erenon Avatar answered Nov 10 '22 22:11

erenon