Convertir un script PHP en un exécutable Windows autonome

128

Je souhaite automatiser une tâche assez simple. Pour cela, j'ai écrit un petit script PHP que je lance depuis la ligne de commande en utilisant PHP-CLI. Maintenant, je veux remettre ce script à quelqu'un mais je ne veux pas:

  • donner le code source
  • lui demander d'installer PHP sur le système

Existe-t-il un moyen de créer une version .exe du script PHP. Je ne suis vraiment pas très inquiet de la décompilation; Je suis plus inquiet de demander aux gens d'installer et de configurer PHP.

Salman A
la source
2
avez-vous entendu parler de bamcompile (r)?
SagarPPanchal
1
J'utilise Bambalam depuis plusieurs années. Il est bloqué depuis environ une éternité maintenant - et plus précisément, il n'est compatible qu'avec PHP4.4.4. Cependant, tant que vous n'avez pas besoin de support UTF8 et similaire et que vous pouvez gérer foreach () cassé et quelques autres, cela devrait fonctionner pour vous. Notez qu'il est impossible de gérer, par exemple, les noms de fichiers UTF8 dans un répertoire, avec PHP4.4.4. Souvenez-vous également qu'il crée des fichiers dans% TEMP% qui ne sont jamais supprimés (php [0-F] {2} .tmp), vous devrez les nettoyer.
Egon_Freeman
Les binaires de PHP peuvent être portés. Vous pouvez simplement dire aux gens d'extraire un dossier entier et de créer un fichier batch qui exécute quelque chose comme "php.exe -c php.ini script.php".
FluorescentGreen5

Réponses:

195

Tarte aux pêches

http://www.peachpie.io

https://github.com/iolevel/peachpie

Peachpie est un compilateur PHP 7 basé sur Roslyn de Microsoft et tiré du populaire Phalanger. Il permet à PHP d'être exécuté dans le .NET / .NETCore en compilant le code PHP en MSIL pur.

Phalanger

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

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

https://github.com/devsense/phalanger

Phalanger est un projet lancé à l'Université Charles de Prague et soutenu par Microsoft. Il compile le code source écrit dans le langage de script PHP en byte-code CIL (Common Intermediate Language). Il gère le début d'un processus de compilation qui est terminé par le composant de compilateur JIT du .NET Framework. Il ne traite pas de la génération de code natif ni de l'optimisation. Son but est de compiler des scripts PHP en assemblages .NET, unités logiques contenant du code CIL et des méta-données.

Bambalam

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

Bambalam PHP EXE Compiler / Embedder est un outil de ligne de commande gratuit pour convertir des applications PHP en applications Windows .exe autonomes. Les fichiers exe produits sont totalement autonomes, pas besoin de dll php etc. Le code php est encodé en utilisant la bibliothèque Turck MMCache Encode donc c'est une solution parfaite si vous voulez distribuer votre application tout en protégeant votre code source. Le convertisseur convient également pour produire des fichiers .exe pour des applications PHP fenêtrées (créées à l'aide par exemple de la bibliothèque WinBinder). C'est également bon pour créer des serveurs / clients PHP Socket autonomes (en utilisant l'extension php_sockets.dll). Ce n'est PAS vraiment un compilateur dans le sens où il ne produit pas de code machine natif à partir de sources PHP, mais cela fonctionne!

ZZEE PHPExe

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

ZZEE PHPExe compile PHP, HTML, Javascript, Flash et d'autres fichiers Web dans des exes GUI Windows. Vous pouvez rapidement développer des applications Windows GUI en utilisant le paradigme Web PHP familier. Vous pouvez utiliser le même code pour les applications en ligne et Windows avec peu ou pas de modification. C'est un produit commercial.

phc-win

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

L'extension PHP bcompiler est utilisée pour compiler le code de script PHP en bytecode PHP. Ce bytecode peut être inclus comme n'importe quel fichier php tant que l'extension bcompiler est chargée. Une fois que tous les fichiers de bytecode ont été créés, un Embeder modifié est utilisé pour emballer tous les fichiers de projet dans l'exe du programme.

A besoin

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

ExeOutput

http://www.exeoutput.com/

Commercial

WinBinder

http://winbinder.org/

WinBinder est une extension open source de PHP, le langage de programmation de scripts. Il permet aux programmeurs PHP de créer facilement des applications Windows natives, produisant des résultats rapides et gratifiants avec un minimum d'effort. Même des scripts courts avec quelques dizaines de lignes peuvent générer un programme utile, grâce à la puissance et à la flexibilité de PHP.

PHPDesktop

https://github.com/cztomczak/phpdesktop

PHP Desktop est un projet open source fondé par Czarek Tomczak en 2012 pour fournir un moyen de développer des applications de bureau natives à l'aide de technologies Web telles que PHP, HTML5, JavaScript et SQLite. Ce projet est plus qu'un simple compilateur PHP vers EXE, il intègre un navigateur Web (Internet Explorer ou Chrome intégré), un serveur Web Mongoose et un interpréteur PHP. Le flux de travail de développement auquel vous êtes habitué reste le même, l'étape consistant à transformer un site Web existant en une application de bureau consiste essentiellement à le copier dans le répertoire "www /". L'utilisation de la base de données SQLite est facultative, vous pouvez intégrer la base de données mysql / postgresql dans le programme d'installation de l'application.

PHP Nightrain

https://github.com/kjellberg/nightrain

En utilisant PHP Nightrain, vous pourrez déployer et exécuter des applications Web HTML, CSS, JavaScript et PHP en tant qu'application de bureau native sur les systèmes d'exploitation Windows, Mac et Linux. Les frameworks PHP populaires (par exemple CakePHP, Laravel, Drupal, etc…) sont bien supportés!

phc-win "fourchette"

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

Version plus ou moins fourchue de phc-win, il utilise les mêmes techniques que phc-win mais supporte presque toutes les versions modernes de PHP. (5.3, 5.4, 5.5, 5.6, etc.) Il peut également utiliser Enigma VB pour combiner le php5ts.dll avec votre exe, ainsi que le compresser UPX. Enfin, win32std et winbinder sont compilés statiquement en PHP.

ÉDITER

Une autre option consiste à utiliser

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

un compilateur en ligne qui peut créer des exécutables pour un certain nombre de plates-formes différentes, à partir d'un certain nombre de langages différents, y compris PHP

MaréeSDK

http://www.tidesdk.org/

TideSDK est en fait le projet renommé Titanium Desktop. Titanium est resté concentré sur le mobile et a abandonné la version de bureau, qui a été reprise par certaines personnes qui l'ont open source et l'ont surnommée TideSDK.

En général, TideSDK utilise HTML, CSS et JS pour rendre les applications, mais il prend en charge les langages de script comme PHP, en tant que module d'extension, ainsi que d'autres langages de script comme Python et Ruby.

Mark Baker
la source
Je peux confirmer que phc-win fonctionne pour créer un fichier exe console avec le code PHP 5.3. Il suffit d'avoir le script PHP dans le même dossier que l'exe php-win.
Dejv
J'ai utilisé le compilateur bambalam. C'est assez cool et facile et prend également en charge win-builder, mais ne prend pas en charge php5 :(
m3nda
PHP-Nightrain est une très bonne alternative à PHPDesktop - et est multiplateforme (Windows, OSX, Linux). Bien qu'il ait eu une mauvaise réputation en raison de sa dépendance à Java, il est maintenant passé à Python en tant que wrapper, et constitue un très bon choix pour développer des logiciels multiplateformes basés sur PHP. - github.com/naetech/nightrain
Taapo
1
Je viens de perdre un dimanche avec un problème / beaviour Bambalam. Dans cette installation, il s'exécute environ 50 fois par jour. Il crée des fichiers temporaires avec une taille de nom fixe qu'il ne supprime jamais (4 caractères) ... résultat plus de noms de fichiers libres. Sysinternals procmon a aidé à comprendre ce qui s'est passé. Ce n'était pas facile et laisse une mauvaise ambiance sur Bambalam.
João
1
super hommes de travail! J'essaierai certains d'entre eux. Quel est le meilleur pour utiliser la base de données mysql avec le site php?
garatu
12

J'ai eu des problèmes avec la plupart des outils dans d'autres réponses car ils sont tous très obsolètes.

Si vous avez besoin d'une solution qui "fonctionnera simplement", mettez une version simplifiée de php avec votre projet dans une archive WinRar SFX, réglez-la pour tout extraire dans un répertoire temporaire et exécutez-la php your_script.php.

Pour exécuter un script de base, les seuls fichiers requis sont php.exeet php5.dll(ou php5ts.dllselon la version).

Pour ajouter des extensions, emballez-les avec un fichier php.ini:

[PHP]
extension_dir = "."
extension=php_curl.dll
extension=php_xxxx.dll
...
toster-cx
la source
salut votre solution est très intéressante. Est similaire au serveur Web quickphp. Avez-vous un exemple simple pour cela? J'espère que vous pourrez fournir une source. Bonne idée au fait.
Edang Jeorlie
C'est vraiment intéressant! Mais le fait est que OP ne veut pas "donner le code source", et même une recrue pourrait simplement extraire le script de SFX.
Jay Dadhania
8

J'ai essayé la plupart des solutions données dans la 1ère réponse, la seule qui a fonctionné pour moi et qui n'est pas commerciale est php-desktop .

J'ai simplement mis mes fichiers php dans le www/dossier, changé le nom de .exeet j'ai pu exécuter mon php en tant qu'exe !!

Il existe également une documentation complète, un support à jour, une compatibilité Windows et Linux et les options peuvent être facilement modifiées.

538ROMEO
la source
2
PHP Desktop prend désormais en charge Linux, voir sa version initiale: github.com/cztomczak/phpdesktop/releases/tag/linux-v72.0
Czarek Tomczak
6

RapidEXE est exactement pour ce travail:

Il convertit un projet php en un exe autonome. J'en avais assez de tous les autres compilateurs, je les ai essayés un par un et ils m'ont tous déçu d'une manière ou d'une autre. Soyez mon invité, les commentaires sont toujours les bienvenus!

Note latérale: le mécanisme sous-jacent est assez similaire à l'approche WinRAR SFX; extraire le moteur, extraire la source, puis exécuter. C'est juste plus rapide et plus facile à utiliser. Compilation à une commande, compression, décompression intelligente, nettoyage automatique, configuration facile, contrôle total du moteur et de la version php; également extensible avec un minimum d'effort.

Bon développement!

Dkellner
la source
J'ai essayé d'utiliser votre outil mais j'obtiens l'erreur suivanteCannot find myself (D:\Desktop\phpflexer\phpflexer.exe)
Ghola
C'est prometteur, mais pourriez-vous ajouter quelques bibliothèques à cela? Par exemple, j'ai besoin de GD2 pour que mes scripts puissent fonctionner sur des images.
Tom
@Tom: bien sûr, il y a une nouvelle version et si vous avez envie de la tester, je peux vous donner un lien de téléchargement. (Pas de malware, je le promets.) C'est en fait beaucoup mieux maintenant et c'est php 7.2, en plus je pense qu'il sera capable de gérer d'autres langues. Mon gmail est kellnerdenes.
dkellner
1
Je viens d'essayer, une solution assez soignée pour les scripts de ligne de commande compilés! J'utilise ExeOutput4PHP pour la plupart de mes projets d'interface graphique depuis un certain temps maintenant, mais pour les applications de console, RapidEXE a également l'air bien, sinon mieux.
Jay Dadhania
1
@JayDadhania Musique à mes oreilles! La version 3 arrive bientôt, restez à l'écoute!
dkellner
2

ExeOutput peut également transformer les sites Web PHP en applications et logiciels Windows

Transformez les sites Web PHP en applications et logiciels Windows

Les applications créées avec ExeOutput pour PHP exécutent nativement des scripts PHP, des applications PHP et des sites Web PHP et ne nécessitent pas de serveur Web, de navigateur Web ou de distribution PHP. Ils sont autonomes et fonctionnent sur n'importe quel ordinateur avec des versions récentes de Windows.

ExeOutput for PHP est un compilateur de site Web puissant qui fonctionne avec tous les éléments trouvés sur les sites modernes: scripts PHP, JavaScript, HTML, CSS, XML, fichiers PDF, Flash, vidéos Flash, vidéos Silverlight, bases de données et images. En combinant ces éléments avec PHP Runtime et les extensions PHP, ExeOutput pour PHP crée un fichier EXE qui contient votre application complète.

http://www.exeoutput.com/

srinath madusanka
la source
1

Mon expérience dans ce domaine me dit que la plupart de ces logiciels fonctionnent bien avec de petits projets.
Mais qu'en est-il des grands projets? par exemple: Zend Framework 2 et certaines choses comme ça.
Certains d'entre eux ont besoin d'un navigateur pour fonctionner et il est difficile de dire au client "veuillez taper http://localhost/" dans la barre d'adresse de votre navigateur !!

Je crée un projet simple pour ce faire: PHPPy

Ce n'est pas un moyen complet de créer un fichier exécutable autonome pour exécuter des projets php, mais vous aide à le faire.
Je n'ai pas pu compiler le fichier python avec PyInstaller ou Py2exe en fichier .exe, j'espère que vous le pouvez.
Vous n'avez pas besoin de fichiers exécutables uniformserver.

M Rostami
la source
4
Créer un raccourci vers localhost c'est un travail difficile, non? :) Quoi qu'il en soit vous avez raison sur "fonctionne bien sur les petits projets". L'unique complet "comme vous le souhaitez" est le phpdesktop.
m3nda
1

Le PHP Nightrain (4.0.0) actuel est écrit en Python et utilise les bibliothèques wxPython. Jusqu'à présent, wxPython a bien fonctionné pour amener PHP Nightrain là où il est aujourd'hui, mais afin de pousser PHP Nightrain à son niveau supérieur, nous introduisons un frère de PHP Nightrain, le PHPWebkit!

C'est une mise à jour de PHP Nightrain.

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

zeddex
la source