Frage Wie kann ich den Namen des Skripts erhalten, das eine Funktion aufgerufen hat?


Ich habe eine log () -Methode und möchte den Namen des Skripts protokollieren, das sie aufgerufen hat. Wie ist das in PHP möglich?


7
2017-12-27 21:59


Ursprung


Antworten:


Abhängig von der aufrufenden Umgebung sollten Sie einen Blick darauf werfen debug_backtrace, und $ _SERVER ['PHP_SELF']

debug_backtrace() gibt Ihnen eine Stack-Trace der Includes und Funktionsaufrufe bisher und $_SERVER['PHP_SELF'] wird Ihnen das aktuell ausgeführte Skript mitteilen, das einfacher ist und genauso gut für das, was Sie wollen, funktioniert. $_SERVER['PHP_SELF'] wird wohl immer das Skript sein, das zB vom Browser aus aufgerufen wurde blah.com/admin.php und blah.com/articles.php dass beide angerufen haben /pages.php um eine Liste der in einem Blog oder etwas gespeicherten Seiten zu erhalten, und etwas schief gelaufen ist - das Protokoll würde Ihnen sagen, ob admin.php oder articles.php rief das Skript an. Aber falls pages.php inbegriffen functions.php was beinhaltet libs.php und libs.php ist fehlgeschlagen, und Sie wollten das wissen functions.php eingeschlossen, dies würde nicht funktionieren - das Protokoll würde immer noch das Skript anzeigen, das das Einschließen gestartet hat (admin.php oder articles.php). In diesem Fall würden Sie verwenden debug_backtrace().


11
2017-12-27 22:03



Sie können einen Blick auf die debug_backtrace Funktion: In der Ausgabe sollten Sie finden, was Sie suchen ;-)

Sie können einen Blick darauf werfen diese Antwort Ich habe vor ein paar Tagen für mehr Informationen und ein Beispiel gepostet.


3
2017-12-27 22:02



Sieh dir das an debug_baktrace.

$backtrace = debug_backtrace();
print_r($backtrace[1]);

2
2017-12-27 22:02



Benutzen debug_backtrace () um ein assoziatives Array zu erhalten, das den kompletten Callstack enthält, und das Array zu untersuchen, um die Details herauszuziehen, an denen Sie interessiert sind.


0
2017-12-27 22:02



Neben den bereits gegebenen Antworten wäre eine sehr Low-Tech-Antwort zu oder anhängen _ _ FILE _ _ oder basename () zu einer Zeichenfolge, die gerade protokolliert wird. (musste in FILE doppelte Leerzeichen hinzufügen, damit es angezeigt wird)


0
2017-12-27 22:29