Ein, zwei Leute haben mich gefragt wie ich das „Compiled by“ Feld in phpinfo unter http://test.spiffytek.de/phpinfo.php integriert habe.
Dafür hier ein kleines How-To basierend auf PHP 7 beta 3.
Die zu bearbeiteten Dateien sind ext/standard/info.c und info.h.
In info.h werden u.a. die Assets festgelegt, in meinem Fall das SpiffyTek Logo, encodiert als Base64.
Da dessen Base64 durch Gardient und Transparenz sehr lang ist nehme ich in diesem Beispiel ein etwas simpleres Bild.
Damit die Übersicht und Struktur erhalten bleibt habe ich unterhalb von
#define ZEND_LOGO_DATA_URI ...
Eine neue „defined“ mit dem Namen „COMPILED_LOGO_DATA_URI“ und dem Base64 Wert des Logos angelegt.
#define COMPILED_LOGO_DATA_URI "data:image/png;base64,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"
Damit ist info.h bereits erledigt.
Kümmern wir uns um info.c indem letztendlich die Position und der Inhalt des Feldes definiert wird.
Ich habe das Feld nach dem „ZendEngine“ Copyright vermerk angefügt. Glücklicherweise gibt es in der info.c dafür einen passenden Kommentar welcher es uns einfach macht die Stelle zu finden.
/* Zend Engine */
Unser Code wird nach(!)
php_info_print_box_end();
und vor(!)
zend_string_free(php_uname); }
eingefügt und sieht folgendermaßen aus:
php_info_print_box_start(0); if (sapi_module.phpinfo_as_text) { PUTS("Compiled by SpiffyTek (http://spiffytek.de/)."); } else { php_info_print("<a href="http://spiffytek.de/"><img border="0" src=""); php_info_print(COMPILED_LOGO_DATA_URI "" alt="SpiffyTek" /></a>n"); php_info_print("Compiled by <a href="http://spiffytek.de/">SpiffyTek</a>."); } php_info_print_box_end();
Den Inhalt entprechend mit eigenen Angaben abändern.
Das PUTS wird für die Cli-Ausgabe verwendet.
Das ganze kompilieren und fertig. Am besten legt man sich von den Änderungen eine .patch-Datei an damit man die Schritte nicht jedesmal wiederholen muss.