Konvertieren Sie ein PHP-Skript in eine eigenständige ausführbare Windows-Datei

128

Ich möchte eine ziemlich einfache Aufgabe automatisieren. Dafür habe ich ein kleines PHP-Skript geschrieben, das ich über die Kommandozeile mit PHP-CLI ausführe. Jetzt möchte ich dieses Skript an jemanden übergeben, aber ich möchte nicht:

  • Gib den Quellcode weg
  • Bitten Sie ihn, PHP auf dem System zu installieren

Gibt es eine Möglichkeit, eine EXE-Version des PHP-Skripts zu erstellen? Ich mache mir wirklich keine großen Sorgen um die Dekompilierung. Ich mache mir mehr Sorgen, wenn ich Leute auffordere, PHP zu installieren und zu konfigurieren.

Salman A.
quelle
2
hast du schon von bamcompile (r) gehört?
SagarPPanchal
1
Ich benutze Bambalam seit einigen Jahren. Es ist seit ungefähr einer Ewigkeit ins Stocken geraten - und genauer gesagt, es ist nur mit PHP4.4.4 kompatibel. Solange Sie jedoch keine UTF8-Unterstützung und ähnliches benötigen und mit defektem foreach () und einigen anderen umgehen können, sollte es für Sie funktionieren. Beachten Sie, dass es mit PHP4.4.4 unmöglich ist, beispielsweise UTF8-Dateinamen in einem Verzeichnis zu verarbeiten. Denken Sie auch daran, dass Dateien in% TEMP% erstellt werden, die niemals entfernt werden (php [0-F] {2} .tmp). Sie müssen diese bereinigen.
Egon_Freeman
Die Binärdateien von PHP können portabel ausgeführt werden. Sie können den Leuten einfach sagen, dass sie einen ganzen Ordner extrahieren und eine Batch-Datei erstellen sollen, die so etwas wie "php.exe -c php.ini script.php" ausführt.
FluorescentGreen5

Antworten:

195

Pfirsichkuchen

http://www.peachpie.io

https://github.com/iolevel/peachpie

Peachpie ist ein PHP 7-Compiler, der auf Roslyn von Microsoft basiert und vom beliebten Phalanger stammt. Es ermöglicht die Ausführung von PHP in .NET / .NETCore durch Kompilieren des PHP-Codes zu reinem MSIL.

Phalanger

http://v4.php-compiler.net/

http://wiki.php-compiler.net/Phalanger_Wiki

https://github.com/devsense/phalanger

Phalanger ist ein Projekt, das an der Karlsuniversität in Prag gestartet und von Microsoft unterstützt wurde. Es kompiliert den in der PHP-Skriptsprache geschriebenen Quellcode in CIL-Bytecode (Common Intermediate Language). Es behandelt den Beginn eines Kompilierungsprozesses, der von der JIT-Compilerkomponente von .NET Framework abgeschlossen wird. Es wird weder die native Codegenerierung noch die Optimierung behandelt. Der Zweck besteht darin, PHP-Skripte in .NET-Assemblys, logische Einheiten mit CIL-Code und Metadaten zu kompilieren.

Bambalam

https://github.com/xZero707/Bamcompile/

Bambalam PHP EXE Compiler / Embedder ist ein kostenloses Befehlszeilentool zum Konvertieren von PHP-Anwendungen in eigenständige Windows EXE-Anwendungen. Die erstellten exe-Dateien sind vollständig eigenständig, es werden keine PHP-DLLs usw. benötigt. Der PHP-Code wird mithilfe der Turck MMCache Encode-Bibliothek codiert. Dies ist eine perfekte Lösung, wenn Sie Ihre Anwendung verteilen und gleichzeitig Ihren Quellcode schützen möchten. Der Konverter eignet sich auch zum Erstellen von EXE-Dateien für PHP-Anwendungen mit Fenster (erstellt beispielsweise mit der WinBinder-Bibliothek). Es ist auch gut geeignet, um eigenständige PHP-Socket-Server / -Clients zu erstellen (mithilfe der Erweiterung php_sockets.dll). Es ist NICHT wirklich ein Compiler in dem Sinne, dass es keinen nativen Maschinencode aus PHP-Quellen erzeugt, aber es funktioniert!

ZZEE PHPExe

http://www.zzee.com/phpexe/

ZZEE PHPExe kompiliert PHP-, HTML-, Javascript-, Flash- und andere Webdateien in Windows-GUI-Exes. Sie können Windows-GUI-Anwendungen schnell entwickeln, indem Sie das bekannte PHP-Webparadigma verwenden. Sie können denselben Code für Online- und Windows-Anwendungen ohne oder mit nur geringen Änderungen verwenden. Es ist ein kommerzielles Produkt.

phc-win

http://wiki.swiftlytilting.com/Phc-win

Die PHP-Erweiterung bcompiler wird verwendet, um PHP-Skriptcode in PHP-Bytecode zu kompilieren. Dieser Bytecode kann wie jede PHP-Datei eingefügt werden, solange die bcompiler-Erweiterung geladen ist. Nachdem alle Bytecode-Dateien erstellt wurden, werden alle Projektdateien mit einem geänderten Embeder in die Programmexe gepackt.

Benötigt

  • php5ts.dll
  • php_win32std.dll
  • php_bcompiler.dll
  • php-embedded.ini

ExeOutput

http://www.exeoutput.com/

Kommerziell

WinBinder

http://winbinder.org/

WinBinder ist eine Open Source-Erweiterung von PHP, der Skriptprogrammiersprache. Damit können PHP-Programmierer auf einfache Weise native Windows-Anwendungen erstellen und mit minimalem Aufwand schnelle und lohnende Ergebnisse erzielen. Selbst kurze Skripte mit ein paar Dutzend Zeilen können dank der Leistung und Flexibilität von PHP ein nützliches Programm erzeugen.

PHPDesktop

https://github.com/cztomczak/phpdesktop

PHP Desktop ist ein Open-Source-Projekt, das 2012 von Czarek Tomczak gegründet wurde, um die Entwicklung nativer Desktop-Anwendungen mithilfe von Webtechnologien wie PHP, HTML5, JavaScript und SQLite zu ermöglichen. Dieses Projekt ist mehr als nur ein PHP-zu-EXE-Compiler. Es enthält einen Webbrowser (Internet Explorer oder Chrome Embedded), einen Mongoose-Webserver und einen PHP-Interpreter. Der von Ihnen gewohnte Entwicklungsworkflow bleibt unverändert. Der Schritt, eine vorhandene Website in eine Desktop-Anwendung umzuwandeln, besteht im Wesentlichen darin, sie in das Verzeichnis "www /" zu kopieren. Die Verwendung der SQLite-Datenbank ist optional. Sie können die Datenbank mysql / postgresql in das Installationsprogramm der Anwendung einbetten.

PHP Nightrain

https://github.com/kjellberg/nightrain

Mit PHP Nightrain können Sie HTML-, CSS-, JavaScript- und PHP-Webanwendungen als native Desktopanwendung unter Windows, Mac und den Linux-Betriebssystemen bereitstellen und ausführen. Beliebte PHP-Frameworks (z. B. CakePHP, Laravel, Drupal usw.) werden gut unterstützt!

PHC-Win "Gabel"

https://github.com/RDashINC/phc-win

Als mehr oder weniger gespaltene Version von phc-win verwendet es dieselben Techniken wie phc-win, unterstützt jedoch fast alle modernen PHP-Versionen. (5.3, 5.4, 5.5, 5.6 usw.) Es kann auch Enigma VB verwenden, um die php5ts.dll mit Ihrer Exe zu kombinieren und UPX zu komprimieren. Schließlich hat es win32std und winbinder statisch in PHP kompiliert.

BEARBEITEN

Eine andere Option ist zu verwenden

http://www.appcelerator.com/products/titanium-cross-platform-application-development/

Ein Online-Compiler, der ausführbare Dateien für eine Reihe verschiedener Plattformen aus verschiedenen Sprachen einschließlich PHP erstellen kann

TideSDK

http://www.tidesdk.org/

TideSDK ist eigentlich das umbenannte Titanium Desktop-Projekt. Titanium konzentrierte sich weiterhin auf Mobilgeräte und gab die Desktop-Version auf, die von einigen Leuten übernommen wurde, die es als Open-Source-Version bezeichnet und als TideSDK bezeichnet haben.

Im Allgemeinen verwendet TideSDK HTML, CSS und JS zum Rendern von Anwendungen, unterstützt jedoch Skriptsprachen wie PHP als Plug-In-Modul sowie andere Skriptsprachen wie Python und Ruby.

Mark Baker
quelle
Ich kann bestätigen, dass phc-win zum Erstellen einer Konsolen-Exe-Datei mit PHP 5.3-Code funktioniert. Haben Sie einfach das PHP-Skript in demselben Ordner wie php-win exe.
Dejv
Ich habe Bambalam Compiler verwendet. Es ist ziemlich cool und einfach und unterstützt auch Win-Builder, aber nicht PHP5 :(
m3nda
PHP-Nightrain ist eine sehr gute Alternative zu PHPDesktop - und plattformübergreifend (Windows, OSX, Linux). Obwohl es aufgrund der Abhängigkeit von Java einen schlechten Ruf hatte, wurde es jetzt als Wrapper auf Python umgestellt und ist eine sehr gute Wahl für die Entwicklung plattformübergreifender Software auf PHP-Basis. - github.com/naetech/nightrain
Taapo
1
Habe gerade einen ganzen Sonntag mit einem Bambalam Problem / Beaviour verloren. In dieser Installation wird es wie 50 Mal am Tag ausgeführt. Es werden temporäre Dateien mit fester Namensgröße erstellt, die er nie löscht (4 Zeichen). Das Ergebnis sind keine freien Dateinamen mehr. Sysinternals procmon half herauszufinden, was passiert war. War nicht einfach und hinterlässt eine schlechte Stimmung auf Bambalam.
João
1
tolle Arbeit Männer! Ich werde einige von ihnen versuchen. Welches ist das beste für die Verwendung von MySQL-Datenbank mit PHP-Site?
Garatu
12

Ich hatte Probleme mit den meisten Tools in anderen Antworten, da sie alle sehr veraltet sind.

Wenn Sie eine Lösung benötigen, die "einfach funktioniert", packen Sie eine Bare-Bones-Version von PHP mit Ihrem Projekt in ein WinRar SFX-Archiv, stellen Sie sie so ein, dass alles in ein temporäres Verzeichnis extrahiert und ausgeführt wird php your_script.php.

Zum Ausführen eines Basisskripts sind nur php.exeund php5.dll(oder php5ts.dllje nach Version) Dateien erforderlich .

Um Erweiterungen hinzuzufügen, packen Sie sie zusammen mit einer php.ini-Datei:

[PHP]
extension_dir = "."
extension=php_curl.dll
extension=php_xxxx.dll
...
toster-cx
quelle
Hallo, deine Lösung ist sehr interessant. Ist ähnlich wie Quickphp Webserver. Haben Sie ein einfaches Beispiel dafür? Ich hoffe, Sie könnten eine Quelle angeben. Gute Idee übrigens.
Edang Jeorlie
Das ist wirklich interessant! Aber die Sache ist, dass OP nicht "den Quellcode verraten" will und sogar ein Anfänger das Skript einfach aus SFX extrahieren könnte.
Jay Dadhania
8

Ich habe den größten Teil der in der ersten Antwort angegebenen Lösung ausprobiert. Die einzige Lösung, die für mich funktioniert hat und nicht kommerziell ist, ist PHP-Desktop .

Ich habe einfach meine PHP-Dateien in den www/Ordner gelegt, den Namen von geändert .exeund konnte meine PHP als Exe ausführen !!

Außerdem gibt es eine vollständige Dokumentation, aktuelle Unterstützung, Windows- und Linux-Kompatibilität und Optionen können leicht geändert werden.

538ROMEO
quelle
2
PHP Desktop unterstützt jetzt Linux, siehe seine erste Version: github.com/cztomczak/phpdesktop/releases/tag/linux-v72.0
Czarek Tomczak
6

RapidEXE ist genau für diesen Job:

Es konvertiert ein PHP-Projekt in eine eigenständige Exe. Ich hatte genug von allen anderen Compilern, habe sie einzeln ausprobiert und sie alle haben mich auf die eine oder andere Weise enttäuscht. Sei mein Gast, Rückmeldungen sind immer willkommen!

Randnotiz: Der Mechanismus dahinter ist dem WinRAR SFX-Ansatz ziemlich ähnlich. Engine extrahieren, Quelle extrahieren und dann ausführen. Es ist einfach schneller und einfacher zu arbeiten. Ein-Befehl-Kompilierung, komprimiert, intelligentes Entpacken, automatische Bereinigung, einfache Konfiguration, volle Kontrolle über die PHP-Engine & Version; auch mit minimalem Aufwand erweiterbar.

Viel Spaß beim Entwickeln!

dkellner
quelle
Ich habe versucht, Ihr Tool zu verwenden, aber ich erhalte die folgende FehlermeldungCannot find myself (D:\Desktop\phpflexer\phpflexer.exe)
Ghola
Es ist vielversprechend, aber könnten Sie ein paar Bibliotheken hinzufügen? Zum Beispiel brauche ich GD2, damit meine Skripte mit Bildern arbeiten können.
Tom
@ Tom: Sicher, es gibt eine neue Version und wenn Sie sie testen möchten, kann ich Ihnen einen Download-Link geben. (Keine Malware, das verspreche ich.) Es ist jetzt viel besser und es ist PHP 7.2, und ich denke, es wird in der Lage sein, andere Sprachen zu handhaben. Mein Google Mail ist kellnerdenes.
dkellner
1
Probieren Sie es einfach aus, eine ziemlich nette Lösung für kompilierte Befehlszeilenskripte! Ich verwende ExeOutput4PHP seit einiger Zeit für die meisten meiner GUI-Projekte, aber für Konsolen-Apps sieht RapidEXE auch gut aus, wenn nicht sogar besser.
Jay Dadhania
1
@ JayDadhania Musik in meinen Ohren! Version 3 kommt bald, bleibt dran!
dkellner
2

ExeOutput kann auch PHP-Websites in Windows-Anwendungen und -Software verwandeln

Verwandeln Sie PHP-Websites in Windows-Anwendungen und -Software

Mit ExeOutput für PHP erstellte Anwendungen führen nativ PHP-Skripte, PHP-Anwendungen und PHP-Websites aus und erfordern keinen Webserver, keinen Webbrowser oder keine PHP-Distribution. Sie sind eigenständig und funktionieren auf jedem Computer mit aktuellen Windows-Versionen.

ExeOutput für PHP ist ein leistungsstarker Website-Compiler, der mit allen Elementen arbeitet, die auf modernen Websites zu finden sind: PHP-Skripte, JavaScript, HTML, CSS, XML, PDF-Dateien, Flash, Flash-Videos, Silverlight-Videos, Datenbanken und Bilder. ExeOutput for PHP kombiniert diese Elemente mit PHP Runtime und PHP Extensions und erstellt eine EXE-Datei, die Ihre gesamte Anwendung enthält.

http://www.exeoutput.com/

Srinath Madusanka
quelle
1

Meine Erfahrung in dieser Angelegenheit zeigt mir, dass die meisten dieser Software gut mit kleinen Projekten funktionieren.
Aber was ist mit großen Projekten? Beispiel: Zend Framework 2 und solche Dinge.
Einige von ihnen benötigen einen Browser, um ausgeführt zu werden, und dies ist für den Kunden schwer zu sagenhttp://localhost/ in die Adressleiste Ihres Browsers " muss.

Dazu erstelle ich ein einfaches Projekt: PHPPy

Dies ist keine vollständige Methode zum Erstellen einer eigenständigen ausführbaren Datei zum Ausführen von PHP-Projekten, hilft Ihnen jedoch dabei.
Ich konnte keine Python-Datei mit PyInstaller oder Py2exe in eine EXE-Datei kompilieren, hoffe du kannst.
Sie benötigen keine ausführbaren Dateien für Uniformserver.

M Rostami
quelle
4
Erstellen Sie einen Shorcut zu localhost, es ist eine harte Arbeit, nicht wahr? :) Wie auch immer, Sie haben Grund zu "funktioniert gut bei kleinen Projekten". Das einzigartige vollständige "wie Sie wollen" ist das phpdesktop.
m3nda
1

Das aktuelle PHP Nightrain (4.0.0) ist in Python geschrieben und verwendet die wxPython-Bibliotheken. Bisher hat wxPython gut daran gearbeitet, PHP Nightrain dahin zu bringen, wo es heute ist. Um PHP Nightrain auf die nächste Stufe zu bringen, stellen wir ein Geschwister von PHP Nightrain vor, das PHPWebkit!

Es ist ein Update für PHP Nightrain.

https://github.com/entrypass/nightrain-ep

zeddex
quelle