BinaryPHP



  • Hallo,

    mit BinaryPHP kann man ja PHP zu C++ umschreiben
    https://sourceforge.net/projects/binaryphp/ (Version 2013)
    In der Readme von BinaryPHP steht folgendes zum Konvertieren:
    ./convert.php --if examples/irc.php --of ircbot

    Wo muss ich das eingeben? habe es schon in der Shell versucht, aber da passiert garnix
    ahja und ich benutze Windows

    Danke



  • Keine Ausgabe in der Shell heisst normalerweise, dass es funktioniert hat.



  • SG1 schrieb:

    Keine Ausgabe in der Shell heisst normalerweise, dass es funktioniert hat.

    und wo finde ich dann die .cpp datei? da gibts auch keine dazu in dem Verzeichnis wo die helloworld.php ist



  • Was heißt du denn bei dem Parameter "--of" (output file) angegeben? Such mal nach dieser Datei...



  • hello hab ich es genannt findet er aber nirgends



  • Dieser Thread wurde von Moderator/in Arcoth aus dem Forum C++ (alle ISO-Standards) in das Forum Compiler- und IDE-Forum verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • kann mir dazu wer noch was sagen, warum das nicht funktioniert? Übrigens warum ist das jetzt unter Compiler reingeschrieben worden die Ursprungnachricht von Tach war auch unter C++ general



  • Mein php schreit mich beim konvertieren an:

    Cardiac@iMac ~/Downloads $ php php2bin/convert.php --if somefile.php --of woot
    PHP Fatal error:  Cannot redeclare Generator::$defines in /Users/Cardiac/Downloads/php2bin/tokenflow.php on line 19
    
    Fatal error: Cannot redeclare Generator::$defines in /Users/Cardiac/Downloads/php2bin/tokenflow.php on line 19
    

    Wenn der fehler gefixt ist, gehts weiter mit Cannot redeclare class Generator , denn der name ist reserved. Haette man mit der verwendung von namespaces verhindern koennen...allerdings ist der code dermassen schaebig das ich mir weitere kommentare zum design spare.

    Also Generator zu MyGenerator umbenannt und den ausserst fragwuerdigen ctor in ein anstaendiges format gebracht. Einmal nen testdurchlauf machen und oops: Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 72 bytes)

    Memory auf 10gig hochgeschraubt und siehe da: Fatal error: Allowed memory size of 10737418240 bytes exhausted (tried to allocate 72 bytes)

    Schoenes stueck software 👍



  • Hat Andrei Alexandrescu in seiner Zeit bei Facebook nicht auch an einem PHP-zu-C++-Transpiler gearbeitet? Ich glaube das ist HPHPc, Source hier, vor diesem Commit.
    Wo es eine fertig kompilierte Version gibt, kann ich nicht sagen, aber wenn mit dem php2bin-Skript kein Weiterkommen ist, dann hätte ich persönlich mehr Vertrauen in diesen:
    Mindestens eine involvierte Person mit viel Ahnung von C++, funktionierede Projektseite und keine obskure Download-Seite wie Sourceforge, die sich schon lange ihren ehemals
    guten Ruf erfolgreich mit Späßen wie Drive-by-Downloads demoliert hat.



  • @Cardiac: Wie hast du das denn geschafft, dass es arbeitet? Bei mir wird keine cpp erzeugt bzw. wo war bei dir die entsprechende cpp Datei zu finden? Hat das jemand schon unter Windows benutzt?

    @Finnegan: Aber beim HPHPc wird keine cpp datei erzeugt oder? also dass ich z.B. aus hello.php eine hello.cpp machen kann.

    Danke euch!



  • Siralle schrieb:

    @Cardiac: Wie hast du das denn geschafft, dass es arbeitet? [...] wo war bei dir die entsprechende cpp Datei zu finden?

    Diese aussagen verraten mir, dass du meinen beitrag entweder nicht gelesen, oder nicht verstanden hast.

    Siralle schrieb:

    Hat das jemand schon unter Windows benutzt?

    Nein.



  • Siralle schrieb:

    @Finnegan: Aber beim HPHPc wird keine cpp datei erzeugt oder? also dass ich z.B. aus hello.php eine hello.cpp machen kann.

    Doch, eigentlich schon. Allerdings wurde die Weiterentwicklung des Transpilers wohl 2013 zugunsten der JIT-VM (HHVM) einsgestellt,
    und letztere über den bisherigen HPHPc-Kram im Git-Repository drübergebügelt, daher benötigt man wohl ein älteres Commit dieses
    Repos, wenn man an HPHPc interessiert ist.

    Ich habe HPHPc noch nie verwendet, es war lediglich als Anregung zum selbst recherchieren gedacht, wenn es die Alternativen nicht
    reissen. Wenn man allerdings bedenkt dass Facebook als "etwas größeres" PHP-Projekt für einige Zeit mit dieser Software betrieben
    wurde, darf man davon ausgehen dass der HPHPc halbwegs brauchbar sein dürfte.

    Leider habe ich nach einer groben Suche auch ein paar Schwierigkeiten gehabt, genauere Infos über den HPHPc zu finden, da auf den
    Seiten und in den Wikis dazu alles auf die HHVM angepasst wurde. Ich bin allerdings auf das hier gestoßen, das scheint mir eine
    Docker-Vorlage zu sein, mit der sich ein funktionierender HPHPc inklusive einiger wohl notwendiger Bugfixes bauen lässt.

    Das sieht mir alles erstmal etwas komplizierter aus, als ich zu Anfang dachte (hatte erwartet dass sich irgendwo schon eine HPHPc.exe
    finden lassen wird, mit der sich .cpp-Dateien erzeugen lassen), aber vielleicht ist es ja trotzdem einen Versuch wert, wenn du mit den
    Alternativen nicht weiterkommst. Ich kann allerdings nicht ganz ausschliessen, dass man zum Kompilieren der damit erzeugten .cpp-Dateien
    nicht eventuell noch eine zusätzliche C++-Bibliothek bauen und einbinden muss, die evtl. diverse PHP-Funktionalitäten in C++ bereitstellt.
    Ich habe mir die ganze Sache wie bereits angedeutet nur oberflächlich angesehen und nicht selbst getestet.



  • Finnegan schrieb:

    Siralle schrieb:

    @Finnegan: Aber beim HPHPc wird keine cpp datei erzeugt oder? also dass ich z.B. aus hello.php eine hello.cpp machen kann.

    Doch, eigentlich schon. Allerdings wurde die Weiterentwicklung des Transpilers wohl 2013 zugunsten der JIT-VM (HHVM) einsgestellt,
    und letztere über den bisherigen HPHPc-Kram im Git-Repository drübergebügelt, daher benötigt man wohl ein älteres Commit dieses
    Repos, wenn man an HPHPc interessiert ist.

    wo krieg ich den alten von 2013 noch her? Finde nur immer den neuen, aber ich würds definitiv gern ausprobieren.

    Das sieht mir alles erstmal etwas komplizierter aus, als ich zu Anfang dachte (hatte erwartet dass sich irgendwo schon eine HPHPc.exe
    finden lassen wird, mit der sich .cpp-Dateien erzeugen lassen), aber vielleicht ist es ja trotzdem einen Versuch wert, wenn du mit den
    Alternativen nicht weiterkommst. Ich kann allerdings nicht ganz ausschliessen, dass man zum Kompilieren der damit erzeugten .cpp-Dateien
    nicht eventuell noch eine zusätzliche C++-Bibliothek bauen und einbinden muss, die evtl. diverse PHP-Funktionalitäten in C++ bereitstellt.
    Ich habe mir die ganze Sache wie bereits angedeutet nur oberflächlich angesehen und nicht selbst getestet.[/quote]



  • Siralle schrieb:

    wo krieg ich den alten von 2013 noch her? Finde nur immer den neuen, aber ich würds definitiv gern ausprobieren.

    Schau dir die Links in meinen Beiträgen an. Hier sind sie nochmal:

    https://github.com/facebook/hhvm/commit/fc5b95110ff75110ad55bb97f7c93a8c4eb68e3b

    ...das ist wohl der letzte Commit, der noch HPHPc enthält.

    https://github.com/allanlw/hphpc-docker

    ...und hier ist der Quellcode der letzte HPHPc-Version zusammen mit einigen Patches in eine Docker-Vorlage verpackt. Das ist wohl (hoffentlich) eine Fire-And-Forget-Variante.



  • ganz blöde frage, wofür brauch ich einen docker? Ich dachte man lädt das hphpc irgendwo runter und dann packt man vorne die php rein und hinten kommt die c++ raus und man kann die c++ kompilieren und hat das Programm und fertig.



  • Siralle schrieb:

    ganz blöde frage, wofür brauch ich einen docker? Ich dachte man lädt das hphpc irgendwo runter und dann packt man vorne die php rein und hinten kommt die c++ raus und man kann die c++ kompilieren und hat das Programm und fertig.

    Im Prinzip habe ich das eigentlich alles schon beantwotet, wenn auch nicht bis ins letzte Detail:
    - Es gibt keine fertig kompilierte Version von HPHPc, ich konnte zumindest keine finden.
    - Daher muss man das Programm aus dem Quellcode selbst kompilieren, der sich bis zu einem gewissen Commit von 2013 im verlinkten HHVM-Repository befand.
    - Um HPHPc zu kompilieren sind sehr wahrscheinlich bestimmte Tools und Bibliotheks-Abhängigkeiten notwendig, es kann also schnell zum Krampf ausarten eine passende Build-Umgebung aufzubauen.
    - Das Docker-Template nimmt einem diese Arbeit ab, indem es eine funktionerende Build-Umgebung für HPHPc in einem Docker-Container konstruiert und HPHPc darin kompiliert.
    - Das Resultat wird sehr wahrscheinlich eine Linux-Version des Programms sein, mit dem sich die PHP-Skripte letztendlich nach C++ übersetzen lassen.
    - Diese Variante habe ich deshalb verlinkt, weil sie sehr wahrscheinlich mit den wenigsten Kopfschmerzen verbunden sein wird. Natürlich kannst du auch versuchen das ganze selbst unter Windows zu kompilieren,
    das ist aber wahrscheinlich mit großem Abstand sehr viel aufwändiger als einfach diese Docker-Version zu benutzen.



  • hallo ich versuch das mit dem docker dauernd, aber wenn ich versuche die dockerfile zu entpacken krieg ich ständig fehlermeldungen 😞



  • Wieso versuchst du ein textfile zu entpacken?!



  • Cardiac schrieb:

    Wieso versuchst du ein textfile zu entpacken?!

    ich versuch das dockimage zu öffnen

    hab mir das übrigens auf ubuntu versucht, wie das dort beschrieben ist
    bekomme die Fehlermeldung

    standard_init_linux.go:178: exec user process caused "permission denied"
    achso ich bin root nur zur info



  • [quote="Finnegan"]

    Siralle schrieb:

    - Das Resultat wird sehr wahrscheinlich eine Linux-Version des Programms sein, mit dem sich die PHP-Skripte letztendlich nach C++ übersetzen lassen.
    - Diese Variante habe ich deshalb verlinkt, weil sie sehr wahrscheinlich mit den wenigsten Kopfschmerzen verbunden sein wird. Natürlich kannst du auch versuchen das ganze selbst unter Windows zu kompilieren,
    das ist aber wahrscheinlich mit großem Abstand sehr viel aufwändiger als einfach diese Docker-Version zu benutzen.

    Wie kann ich das denn anders kompilieren - vielleicht ging das besser denn Kopfschmerzen hab ich schon. Könntest du das kurz ausprobieren, wenn du dich mit Docker auskennst wirklich ich versuch jetzt schon seit 2 Wochen dieses Ding zu starten und das funktioniert einfach nicht 😞
    Danke!


Anmelden zum Antworten