PHP Funktionen ändern

Mich würde es mal interessieren wie manche Hoster, bestimmte php Funktionen ändern.
Ist dies mit viel Aufwand verbunden? Veränderung des php Quelltextes?

Hier ein paar Beispiele:
bplaced: Mail(), phpinfo()
K***: Mail()

MfG
BeenGreen

push

Du meinst, wie man den Namen von PHP-Funktionen ändert? Das müsste im Quelltext von PHP (is ja open-source) gehen, also function mail() einfach in function bla() umschreiben. Oder du machst das so:

function bla($param1, $param2) { mail($param1, $param2); }

Ja also ich weiß schon wie ich eigene Funktionen in php schreibe.
Bin jetz nicht so der php-noob :smiley:

Ich meine das was du mit dem Quelltext schon angesprochen hast.
Wer weiß denn welche Sprache das ist?
Hat jmd. schon Erfahrungen damit gesammelt?

MfG
BeenGreen

[quote=“BeenGreen”]Wer weiß denn welche Sprache das ist?
Hat jmd. schon Erfahrungen damit gesammelt?[/quote]
Die Sprache hinter PHP ist C; von C habe ich auch nicht wirklich viel Ahnung.
Auf jeden Fall sollte man C und ggf. den Umgang mit der Zend Engine beherrschen, bevor man loshax0rt. :wink:

Lad dir doch einfach mal den Code runter.
Die Funktion phpinfo zum Beispiel wird in der Datei ext/standard/info.c definiert.
Ein paar einfache Änderung daran sollten nicht soo schwer zu machen sein.

Ist da ein Kompiler dabei, oder funzt das mit jedem 0815-Kompilier für das betreffende OS ?

Also ich hab noch kein Programm gesehen, dass einen Kompiler mit dem Quelltext mitgeliefert hätte (Kompiler selbst mal ausgenommen).
Es wäre auch ziemlich unsinnig.

[quote=“BeenGreen”]Ich meine das was du mit dem Quelltext schon angesprochen hast.
Wer weiß denn welche Sprache das ist?[/quote]
Die reservierten Funktionen von PHP die man hat, sind doch ganz normaler PHP-Quelltext oder nicht?

Nein, C. :wink:

Frage: Kompiliert php den PHP-Quelltext, oder ist das eher Skripting??

Ich persönlich glaube eher, dass php kompiliert…
dh.: Wie bei C,C++,oä. gibts normale includes, die schgon kompilierte Funktionen einbinden…

PHP interpretiert den Quelltext. Das Script wird geparst und die Anweisungen werden Schritt für Schritt durchgegangen. Kompiliert wird PHP nicht, allerdings gibt es auch ein Tool, das PHP tatsächlich in Maschinensprache übersetzen kann.
#[size=85]edit:[/size] Ähm, PHP wird doch kompiliert. :red: Nicht in Maschinen-, sondern in Bytecode.

Meinst du #define? Das ist kein include im eigentlichen Sinne, der Compiler ersetzt das #include mit dem Inhalt der eigentlichen Datei, bevor kompiliert wird. :wink:

Also genauer genommen wird auch PHP kompiliert, allerdings nicht zu Maschinencode für den jeweiligen Prozessor, sondern zu einem speziellen Bytecode, der von einer virtuellen Maschine, der Zend Engine, ausgeführt (interpretiert) wird.
So funktioniert das bei den meisten Scriptsprachen heute.

Dann sind alle Functionen in dieser Bytesprache gespeichert, die dan von Zend ausgewertet wird…

Gespeichert? Nein, kompiliert wird zu Laufzeit.
Auf die Funktionen, die in C geschrieben sind, trifft das natürlich nicht zu.

Da hab ich ja was in’s rollen gebracht :slight_smile:.

[quote=“me1357”]
Die Funktion phpinfo zum Beispiel wird in der Datei ext/standard/info.c definiert.[/quote]
Ich habe auf meinem Server php per apt installiert und finde keine ‘info.c’

MfG
BeenGreen

Logisch … ich hab ja auch vom Source-Code geredet.
php.net/downloads.php#v5

Alsoooo:

Zu mail() bei kilu:
Es sieht so aus als ob das so gelöst wurde das anstatt der sendmail binary ein python script die mails über einen im UCP eingetragenen SMTP Server versendet.

Zu mail() bei bplaced:
Bei bplaced wird das direkt an die sendmail binary übergeben allerdings mit ein paar Optionen (z.B. der return Adresse)

Wie das mit der Beschränkung gelöst ist weiß ich nicht

Zu phpinfo() bei bplaced:
Die phpinfo so zu ändern ist meines Wissens nur durch eingriffe in den source code möglich.

Ja ok,
Ich hab php aber nicht mit dem surce code kompiliert.

Das muss doch auch so gehn?

MfG
BeenGreen

Wie soll das denn gehen? Du kannst interne Funktionen nicht einfach so ändern, du musst den C-Quelltext anpassen und selber compilen. Wenn du nur die vorkompilierte Version hast, kannst du an der genauso wenig schrauben wie an der Windows-API. :wink:

Du könntest interne Funktionen mit runkit verändern, aber bei so etwas sind Segfaults ja fast vorprogrammiert.