web-dev-qa-db-fra.com

Convertir un script PHP en un exécutable autonome de Windows

Je veux automatiser une tâche assez simple. Pour cela, j'ai écrit un petit script PHP que je lance à partir de 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
  • demandez-lui d'installer PHP sur le système

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

123
Salman A

Peachpie

http://www.peachpie.io

https://github.com/iolevel/peachpie

Peachpie est un compilateur PHP 7 basé sur Roslyn de Microsoft et s’inspirant du populaire Phalanger. Il permet à PHP d'être exécuté dans .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 octet-code CIL (Common Intermediate Language). Il gère le début d'un processus de compilation complété 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 PHP scripts en assemblées .NET, unités logiques contenant du code CIL et métadonnées.

Bambalam

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

Bambalam PHP EXE Compiler/Embedder est un outil de ligne de commande gratuit permettant de 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 codé à l'aide de la bibliothèque Turck MMCache Encode, ce qui en fait une solution idéale si vous souhaitez distribuer votre application tout en protégeant votre code source. Le convertisseur convient également à la production de fichiers .exe pour les applications fenêtrées PHP (créées à l'aide, par exemple, de la bibliothèque WinBinder). C'est aussi bien pour faire PHP serveurs/clients autonomes (à l'aide de 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 ça fonctionne!

ZZEE PHPExe

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

ZZEE PHPExe compile les fichiers PHP, HTML, Javascript, Flash et autres fichiers Web dans des exes d'interface graphique Windows. Vous pouvez développer rapidement des applications graphiques Windows en utilisant le paradigme Web bien connu PHP. 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

Le PHP extension bcompiler est utilisé pour compiler le code de script PHP en PHP bytecode. 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 intégrer tous les fichiers de projet dans le programme exe.

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 script. Il permet aux PHP programmeurs de créer facilement des applications Windows natives, produisant des résultats rapides et enrichissants avec un minimum d'effort. Même des scripts courts comportant 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 to EXE, il intègre un navigateur Web (Internet Explorer ou Chrome incorporé), un serveur Web Mongoose et un PHP interprète. Le processus de développement auquel vous êtes habitué reste le même, la transformation d’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 HTML, CSS, JavaScript et PHP Web en tant qu'application de bureau native sous Windows, Mac et les systèmes d'exploitation Linux. Les populaires PHP Frameworks (par exemple, CakePHP, Laravel, Drupal, etc.) sont bien pris en charge!

phc-win "fork"

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

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

EDIT

Une autre option est d'utiliser

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

un compilateur en ligne capable de créer des exécutables pour différentes plateformes, à partir de plusieurs langages, dont PHP

TideSDK

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 pour ordinateur de bureau, qui a été reprise par certaines personnes qui l’ont ouverte et l’a surnommée TideSDK.

Généralement, TideSDK utilise HTML, CSS et JS pour rendre les applications, mais il prend en charge les langages de script tels que PHP, en tant que module de plug-in, ainsi que d'autres langages de script tels que Python et Ruby.

187
Mark Baker

J'ai essayé la plupart des solutions données dans la 1ère réponse, le seul qui a fonctionné pour moi et qui est non commercial. est php-desktop.

J'ai simplement mis mes fichiers php dans le dossier www/, modifié le nom de .exe et réussi à exécuter mon php en tant qu'exe!

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

8
538ROMEO

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 "fonctionne", intégrez une version complète de php avec votre projet dans une archive WinRar SFX, configurez-la pour extraire le tout dans un répertoire temporaire et exécutez php your_script.php.

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

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

[PHP]
extension_dir = "."
extension=php_curl.dll
extension=php_xxxx.dll
...
8
toster-cx

RapidEXE est exactement pour ce travail:

Il convertit un projet php en un exe autonome. J'en avais assez des 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 retours sont toujours les bienvenus!

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

Bon développement!

5
dkellner

http://winbinder.org/

"WinBinder est une nouvelle extension open source pour PHP, le langage de programmation de script. Il permet aux programmeurs PHP de créer facilement des applications Windows natives."

3
djot

ExeOutput is also can pouvez transformer les sites Web PHP en applications et logiciels Windows.

Transformez PHP sites Web en applications et logiciels Windows

Les applications créées avec ExeOutput pour PHP exécutent _ des scripts [PHP], des applications PHPet des sites Web PHP de manière native, et ne nécessitent pas de serveur Web. un navigateur Web ou PHP distribution. Ils sont autonomes et fonctionnent sur n’importe quel ordinateur avec les dernières versions de Windows.

ExeOutput for PHP est un puissant compilateur de sites Web qui fonctionne avec tous les éléments présents sur les sites modernes: PHP scripts, JavaScript, HTML, CSS, XML, PDF fichiers, vidéos Flash, vidéos Flash, vidéos Silverlight, bases de données et images. La combinaison de ces éléments avec PHP Runtime et PHP Extensions, ExeOutput pour PHP génère un fichier EXE contenant l'ensemble de votre application.

http://www.exeoutput.com/

2
srinath madusanka

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 obtenir PHP Nightrain là où il se trouve aujourd'hui, mais afin de pousser PHP Nightrain à son niveau suivant, nous introduisons un frère de PHP Nightrain, le PHPWebkit!

C'est une mise à jour de PHP Nightrain.

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

1
zeddex

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 quelques choses comme ça.
Certains d'entre eux ont besoin d'un navigateur pour s'exécuter et il est difficile d'indiquer au client "veuillez taper http://localhost/" dans la barre d'adresse de votre navigateur!

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

Ce n'est pas une façon complète de créer un fichier exécutable autonome pour exécuter des projets php, mais vous aide à le faire.
Je ne pouvais pas compiler le fichier python avec PyInstaller ou Py2exe en fichier .exe, j'espère que vous le pourrez.
Vous n’avez pas besoin des fichiers exécutables uniformserver.

1
Mohamad Rostami