Tom: Gibt es die Möglichkeit, in PHP den Callstack auszugeben?

Beitrag lesen

Hello,

ja, schon, aber die Funktion wird aus sehr vielen verschiedenen Scripten und teilweise aus includes heraus an teilweise einigen hundert Stellen aufgerufen.
Mit der Methode bekomme ich ja nur die Datei heraus, die per URL aufgerufen wurde - aber nicht die Datei, die den Funktionsaufruf gemacht hat.

Das ist doch das Script, dass den Funktionsaufruf getätigt hat.
Du möchtest jetzt aber den Namen des include-Files, das dafür verantwortlich ist.
Dazu müsstest Du in jedem Include-File eine globale Variable mit __FILE__ befüllen und die dann in der aufgerufenen Funktion abfragen.

Also

global $aktives_include;

$aktives_include = __FILE__;

--- Beginn des 1. Includes ---
    $aktives_include = __FILE__;

fehlerhafte_funktion();

--- Ende des Includes

...
  ...

--- Beginn des 2. Includes ---
    $aktives_include = __FILE__;

fehlerhafte_funktion();

--- Ende des Includes

Und fehlerhafte_funktion() enthält dann Das Schreiben des Log-Eintrages

Global $aktives_include;
  error_log(...,$aktives_include;

Das ist aber bislang nur eine Idee.
Denn WANN genau die Variablenzuweisung durchgeführt wird, und wann die Namensräume zugewisen werden, weiß ich nicht. Die Magische Kosntante __FILE__ wird jedenfalls beim Laden des Includes mit dessen Namen gefüllt.

Wie man da nun per Callback herankommt, habe ich nicht ausprobiert.

http://de3.php.net/manual/de/ref.errorfunc.php

Harzliche Grüße aus http://www.annerschbarrich.de

Tom

--
Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
Nur selber lernen macht schlau