Umbenennen von Funktionen zur Laufzeit in PHP

8

In PHP 5.3 gibt es eine Möglichkeit, eine Funktion umzubenennen oder eine Funktion zu "haken".

Es gibt die rename_function() in "APD", die seit ~ 2004 unterbrochen wurde. Wenn Sie versuchen, es unter PHP 5.3 zu erstellen, erhalten Sie diesen Fehler:

'struct _zend_compiler_globals' has no member named 'extended_info'

Dies ist ein wirklich einfacher Fehler zu beheben, ändern Sie einfach diese Zeile:

GC(extended_info) = 1;

bis

CG(compiler_options) |= ZEND_COMPILE_EXTENDED_INFO;

Ich habe meine php.ini geändert und die APD erscheint in meinem phpinfo () wie es sollte. Wenn ich jedoch rename_function() aufruft, wird die PHP-Seite nicht geladen und ich bekomme einen Segmentierungsfehler in meinem /var/log/apache2/error.log .

Gibt es eine Lösung, um APD zu reparieren, um mit einer modernen Version von PHP zu arbeiten? Oder gibt es eine andere Methode, um Funktionen umzubenennen? Warum in der Welt ist ein wichtiges Merkmal nicht in PHP! ??!?! (Ich liebe Python:)

    
rook 17.05.2010, 02:26
quelle

3 Antworten

2

Die aktuelle Runkit-Erweiterung finden Sie auf Ссылка Es unterstützt alle aktuell verfügbaren PHP-Versionen (von 4.4 bis 5.4+). Dieses Runkit ist offiziell und wird unterstützt.

Mit freundlichen Grüßen, Dmitry Zenovich

    
Dmitry Zenovich 08.09.2012, 22:01
quelle
2

Runkit trunk ist 5.3+ kompatibel.

%Vor%

Fügen Sie extension = runkit.so zu php.ini hinzu (oder runkit.ini in conf.d)

Um runkit_function_rename() zu verwenden, müssen Sie auch php mit dem --enable-maintainer-zts Konfigurations-Flag neu kompilieren. (Verdammt, du zend!)

    
chx 17.05.2010 03:07
quelle
2

Ich weiß, dass diese Frage ein wenig alt ist, aber ich suchte kürzlich nach einer Möglichkeit, Funktionen zum Testen umzubenennen und stieß auf ähnliche Schwierigkeiten mit APD.

Schließe schließlich die richtige Google-Suchanfrage an und finde eine weitere Option: Sebastian Bergmanns test_helpers-Erweiterung - es hat seine Eigenes rename_function() , das scheint gut zu funktionieren, sowie einige andere nützliche Helfer zum Abfangen und Spotten von Dingen.

Bonus - ein relativ schmerzfreier Installationsvorgang:

%Vor%

Und dann extension=test_helpers.so zu deiner php.ini

hinzufügen     
larcher 26.05.2012 19:31
quelle

Tags und Links