Converti uno script PHP in un eseguibile Windows autonomo


128

Voglio automatizzare un compito abbastanza semplice. Per questo ho scritto un piccolo script PHP che eseguo dalla riga di comando usando PHP-CLI. Ora voglio consegnare questo script a qualcuno ma non voglio:

  • dare il codice sorgente
  • chiedigli di installare PHP sul sistema

C'è un modo per creare una versione .exe dello script PHP. Non sono davvero molto preoccupato per la compilazione; Sono più preoccupato di chiedere alle persone di installare e configurare PHP.


2
hai sentito parlare di bamcompile (r)?
SagarPPanchal,

1
Usano Bambalam da diversi anni. È stato bloccato per circa ora - e soprattutto, è compatibile solo con PHP4.4.4. Tuttavia, purché non richieda il supporto UTF8 e simili e sia in grado di gestire foreach () e alcuni altri, dovrebbe funzionare per te. Nota che è impossibile gestire, per esempio, i nomi dei file UTF8 in una directory, con PHP4.4.4. Ricorda inoltre che crea file in% TEMP% che non vengono mai rimossi (php [0-F] {2} .tmp), dovrai pulirli.
Egon_Freeman,

I binari di PHP possono essere eseguiti in modo portabile. Puoi semplicemente dire alle persone di estrarre un'intera cartella e creare un file batch che esegue qualcosa come "php.exe -c php.ini script.php".
FluorescentGreen5

Risposte:


195

Torta di Pesche

http://www.peachpie.io

https://github.com/iolevel/peachpie

Peachpie è un compilatore di PHP 7 basato su Roslyn di Microsoft e attinto dal famoso Phalanger. Consente a PHP di essere eseguito all'interno di .NET / .NETCore compilando il codice PHP in MSIL puro.

Phalanger

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

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

https://github.com/devsense/phalanger

Phalanger è un progetto avviato alla Charles University di Praga e supportato da Microsoft. Compila il codice sorgente scritto nel linguaggio di scripting PHP nel codice byte CIL (Common Intermediate Language). Gestisce l'inizio di un processo di compilazione completato dal componente del compilatore JIT di .NET Framework. Non riguarda la generazione di codice nativo né l'ottimizzazione. Il suo scopo è quello di compilare script PHP in assembly .NET, unità logiche contenenti codice CIL e metadati.

Bambalam

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

Bambalam PHP EXE Compiler / Embedder è uno strumento da riga di comando gratuito per convertire le applicazioni PHP in applicazioni Windows .exe autonome. I file exe prodotti sono totalmente autonomi, non sono necessarie dll php ecc. Il codice php è codificato utilizzando la libreria Turck MMCache Encode, quindi è una soluzione perfetta se si desidera distribuire l'applicazione proteggendo il codice sorgente. Il convertitore è anche adatto per la produzione di file .exe per applicazioni PHP con finestre (create usando ad esempio la libreria WinBinder). È anche utile per creare server / client PHP Socket autonomi (usando l'estensione php_sockets.dll). NON è davvero un compilatore, nel senso che non produce codice macchina nativo da fonti PHP, ma funziona!

ZZEE PHPExe

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

ZZEE PHPExe compila i file PHP, HTML, Javascript, Flash e altri file Web negli ex GUI di Windows. È possibile sviluppare rapidamente applicazioni GUI di Windows utilizzando il familiare paradigma Web PHP. È possibile utilizzare lo stesso codice per applicazioni online e Windows con modifiche minime o nulle. È un prodotto commerciale.

PHC-win

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

Il compilatore b estensione PHP viene utilizzato per compilare il codice dello script PHP in bytecode PHP. Questo bytecode può essere incluso come qualsiasi file php purché sia ​​caricata l'estensione bcompiler. Una volta creati tutti i file bytecode, viene utilizzato un Embeder modificato per comprimere tutti i file di progetto nell'exe del programma.

Richiede

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

ExeOutput

http://www.exeoutput.com/

Commerciale

WinBinder

http://winbinder.org/

WinBinder è un'estensione open source di PHP, il linguaggio di programmazione degli script. Consente ai programmatori PHP di creare facilmente applicazioni Windows native, producendo risultati rapidi e gratificanti con il minimo sforzo. Anche brevi script con poche decine di righe possono generare un programma utile, grazie alla potenza e alla flessibilità di PHP.

PHPDesktop

https://github.com/cztomczak/phpdesktop

PHP Desktop è un progetto open source fondato da Czarek Tomczak nel 2012 per fornire un modo per sviluppare applicazioni desktop native usando tecnologie web come PHP, HTML5, JavaScript e SQLite. Questo progetto è molto più di un semplice compilatore da PHP a EXE, incorpora un browser web (Internet Explorer o Chrome incorporato), un web server Mongoose e un interprete PHP. Il flusso di lavoro di sviluppo a cui siete abituati rimane lo stesso, il passaggio per trasformare un sito Web esistente in un'applicazione desktop è fondamentalmente una questione di copiarlo nella directory "www /". L'uso del database SQLite è facoltativo, è possibile incorporare il database mysql / postgresql nel programma di installazione dell'applicazione.

PHP Nightrain

https://github.com/kjellberg/nightrain

Usando PHP Nightrain sarai in grado di distribuire ed eseguire applicazioni Web HTML, CSS, JavaScript e PHP come un'applicazione desktop nativa su sistemi operativi Windows, Mac e Linux. I famosi framework PHP (ad esempio CakePHP, Laravel, Drupal, ecc ...) sono ben supportati!

"forcella" phc-win

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

Una versione più o meno biforcuta di phc-win, utilizza le stesse tecniche di phc-win ma supporta quasi tutte le moderne versioni di PHP. (5.3, 5.4, 5.5, 5.6, ecc.) Può anche usare Enigma VB per combinare php5ts.dll con il tuo exe, così come UPX lo comprime. Infine, win32std e winbinder sono stati compilati staticamente in PHP.

MODIFICARE

Un'altra opzione è usare

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

un compilatore online in grado di creare eseguibili per un numero di piattaforme diverse, da un numero di lingue diverse tra cui PHP

TideSDK

http://www.tidesdk.org/

TideSDK è in realtà il progetto Titanium Desktop rinominato. Titanium è rimasto concentrato sui dispositivi mobili e ha abbandonato la versione desktop, che è stata rilevata da alcune persone che lo hanno open source e lo hanno chiamato TideSDK.

In generale, TideSDK utilizza HTML, CSS e JS per il rendering delle applicazioni, ma supporta linguaggi di script come PHP, come modulo plug-in, nonché altri linguaggi di scripting come Python e Ruby.


Posso confermare che phc-win funziona per la creazione di file exe console con codice PHP 5.3. Basta avere lo script PHP nella stessa cartella di php-win exe.
Dejv,

Ho usato il compilatore bambalam. È abbastanza bello e facile e supporta anche win-builder, ma non supporta php5 :(
m3nda

PHP-Nightrain è un'ottima alternativa a PHPDesktop ed è multipiattaforma (Windows, OSX, Linux). Sebbene avesse una cattiva reputazione a causa della dipendenza da Java, ora è passato a Python come wrapper ed è un'ottima scelta per lo sviluppo di software multipiattaforma basato su PHP. - github.com/naetech/nightrain
Taapo,

1
Ho appena perso una domenica con un problema / segnale Bambalam. In questa installazione viene eseguito come 50 volte al giorno. Crea file temporanei con dimensioni fisse del nome che non elimina mai (4 caratteri) ... non risultano più nomi di file gratuiti. Il procmon Sysinternals ha aiutato a capire cosa è successo. Non è stato facile e lascia una brutta atmosfera su Bambalam.
João,

1
ottimo lavoro uomini! Ne proverò alcuni. Qual è il migliore database mysql per l'uso con il sito php?
Garatu,

12

Ho avuto problemi con la maggior parte degli strumenti in altre risposte poiché sono tutti molto obsoleti.

Se hai bisogno di una soluzione che "funzioni", comprimi una versione bare-php di php con il tuo progetto in un archivio SFR WinRar, impostalo per estrarre tutto in una directory temporanea ed eseguirlo php your_script.php.

Per eseguire uno script di base, gli unici file richiesti sono php.exee php5.dll(o in php5ts.dllbase alla versione).

Per aggiungere estensioni, comprimile insieme a un file php.ini:

[PHP]
extension_dir = "."
extension=php_curl.dll
extension=php_xxxx.dll
...

ciao la tua soluzione è molto interessante. È simile al server web quickphp. Hai un semplice esempio per questo? Spero che tu possa fornire una fonte. Bella idea a proposito.
Edang Jeorlie,

Questo è davvero interessante! Ma il fatto è che OP non vuole "dare via il codice sorgente", e persino un novellino potrebbe semplicemente estrarre lo script da SFX.
Jay Dadhania,

8

Ho provato la maggior parte della soluzione fornita nella prima risposta, l'unica che ha funzionato per me ed è non commerciale è php-desktop .

Ho semplicemente messo i miei file php nella www/cartella, ho cambiato il nome di.exe e sono stato in grado di eseguire il mio php come exe !!

Inoltre c'è una documentazione completa, supporto aggiornato, compatibilità con Windows e Linux e opzioni che possono essere facilmente cambiate.


2
PHP Desktop ora supporta Linux, vedi la sua versione iniziale: github.com/cztomczak/phpdesktop/releases/tag/linux-v72.0
Czarek Tomczak

6

RapidEXE è esattamente per questo lavoro:

Converte un progetto php in un exe autonomo. Ne ho abbastanza di tutti gli altri compilatori, li ho provati uno per uno e tutti mi hanno deluso in un modo o nell'altro. Sii mio ospite, i feedback sono sempre ben accetti!

Nota a margine: il meccanismo alla base è abbastanza simile all'approccio WinRAR SFX; estrarre il motore, estrarre la fonte, quindi eseguire. È solo più veloce e più facile da lavorare. Compilazione a un comando, compressione compressa, decompressione intelligente, pulizia automatica, configurazione semplice, controllo completo del motore php e versione; estensibile anche con il minimo sforzo.

Felice sviluppo!


Ho provato a usare il tuo strumento ma ho ricevuto il seguente erroreCannot find myself (D:\Desktop\phpflexer\phpflexer.exe)
Ghola,

È promettente ma potresti aggiungere alcune librerie a questo? Ad esempio ho bisogno di GD2 in modo che i miei script possano lavorare sulle immagini.
Tom,

@ Tom: certo, c'è una nuova versione e se hai voglia di provarlo posso darti un link per il download. (Nessun malware, lo prometto.) In realtà è molto meglio ora ed è php 7.2, inoltre penso che sarà in grado di gestire altre lingue. Il mio gmail è kellnerdenes.
dkellner,

1
Ho appena provato questo, una soluzione piuttosto accurata per gli script compilati della riga di comando! Sto usando ExeOutput4PHP per la maggior parte dei miei progetti di GUI da un po 'di tempo ormai, ma anche per le app per console RapidEXE sembra fantastico, se non meglio.
Jay Dadhania,

1
@JayDadhania Musica alle mie orecchie! La versione 3 in arrivo, rimanete sintonizzati!
dkellner

2

ExeOutput è anche in grado di trasformare i siti Web PHP in applicazioni e software Windows

Trasforma i siti Web PHP in applicazioni e software Windows

Le applicazioni realizzate con ExeOutput per PHP eseguono script PHP, applicazioni PHP e siti Web PHP in modo nativo e non richiedono un server Web, un browser Web o una distribuzione PHP. Sono autonomi e funzionano su qualsiasi computer con versioni recenti di Windows.

ExeOutput per PHP è un potente compilatore di siti Web che funziona con tutti gli elementi presenti nei siti moderni: script PHP, JavaScript, HTML, CSS, XML, file PDF, Flash, video Flash, video Silverlight, database e immagini. Combinando questi elementi con PHP Runtime ed estensioni PHP, ExeOutput per PHP crea un file EXE che contiene l'applicazione completa.

http://www.exeoutput.com/


1

La mia esperienza in questa materia mi dice che la maggior parte di questi software funziona bene con piccoli progetti.
E i grandi progetti? ad esempio: Zend Framework 2 e alcune cose del genere.
Alcuni di essi hanno bisogno del browser per funzionare e questo è difficile dire al cliente "si prega di digitarehttp://localhost/ " nella barra degli indirizzi del browser !!

Creo un semplice progetto per fare questo: PHPPy

Questo non è un modo completo per creare file eseguibili autonomi per l'esecuzione di progetti php, ma ti aiuta a farlo.
Non ho potuto compilare il file Python con PyInstaller o Py2exe in file .exe, spero che tu possa.
Non hai bisogno di file eseguibili uniformserver.


4
Creare uno shorcut su localhost è un duro lavoro, no? :) Comunque hai ragione su "funziona bene su piccoli progetti". Il phpdesktop unico nel suo genere è "come vuoi".
m3nda,

1

L'attuale PHP Nightrain (4.0.0) è scritto in Python e utilizza le librerie wxPython. Finora wxPython ha funzionato bene per portare PHP Nightrain dove si trova oggi ma al fine di spingere PHP Nightrain al suo livello successivo, stiamo introducendo un fratello di PHP Nightrain, il PHPWebkit!

È un aggiornamento di PHP Nightrain.

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

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.