Convierta un script PHP en un ejecutable de Windows independiente

128

Quiero automatizar una tarea bastante simple. Para esto, he escrito un pequeño script PHP que ejecuto desde la línea de comandos usando PHP-CLI. Ahora quiero entregar este script a alguien pero no quiero:

  • regalar el código fuente
  • pedirle que instale PHP en el sistema

¿Hay alguna manera de crear una versión .exe del script PHP? Realmente no estoy muy preocupado por la descompilación; Me preocupa más pedirle a la gente que instale y configure PHP.

Salman A
fuente
2
¿Has oído hablar de bamcompile (r)?
SagarPPanchal
1
He estado usando Bambalam por varios años. Se ha estancado desde hace casi una eternidad, y más aún, solo es compatible con PHP4.4.4. Sin embargo, siempre que no requiera soporte UTF8 y similares y pueda lidiar con foreach roto () y algunos otros, debería funcionar para usted. Tenga en cuenta que es imposible tratar, por ejemplo, los nombres de archivo UTF8 en un directorio, con PHP4.4.4. Recuerde también que crea archivos en% TEMP% que nunca se eliminan (php [0-F] {2} .tmp), deberá limpiarlos.
Egon_Freeman
Los binarios de PHP pueden ejecutarse de forma portátil. Simplemente puede decirle a la gente que extraiga una carpeta completa y cree un archivo por lotes que ejecute algo como "php.exe -c php.ini script.php".
FluorescentGreen5

Respuestas:

195

Melocotón

http://www.peachpie.io

https://github.com/iolevel/peachpie

Peachpie es un compilador PHP 7 basado en Roslyn por Microsoft y que se basa en el popular Phalanger. Permite que PHP se ejecute dentro de .NET / .NETCore compilando el código PHP en MSIL puro.

Falangero

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

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

https://github.com/devsense/phalanger

Phalanger es un proyecto que se inició en la Universidad Charles de Praga y contó con el respaldo de Microsoft. Compila el código fuente escrito en el lenguaje de script PHP en código de bytes CIL (Common Intermediate Language). Maneja el comienzo de un proceso de compilación que se completa con el componente compilador JIT de .NET Framework. No aborda la generación ni la optimización de código nativo. Su propósito es compilar scripts PHP en ensamblados .NET, unidades lógicas que contienen código CIL y metadatos.

Bambalam

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

Bambalam PHP EXE Compiler / Embedder es una herramienta de línea de comandos gratuita para convertir aplicaciones PHP en aplicaciones Windows .exe independientes. Los archivos exe producidos son totalmente independientes, no se necesitan php dlls, etc. El código php se codifica utilizando la biblioteca Turck MMCache Encode, por lo que es una solución perfecta si desea distribuir su aplicación mientras protege su código fuente. El convertidor también es adecuado para producir archivos .exe para aplicaciones PHP con ventana (creadas usando, por ejemplo, la biblioteca WinBinder). También es bueno para hacer servidores / clientes PHP Socket independientes (usando la extensión php_sockets.dll). NO es realmente un compilador en el sentido de que no produce código máquina nativo de fuentes PHP, ¡pero funciona!

ZZEE PHPExe

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

ZZEE PHPExe compila PHP, HTML, Javascript, Flash y otros archivos web en Windows GUI exes. Puede desarrollar rápidamente aplicaciones GUI de Windows empleando el conocido paradigma web PHP. Puede usar el mismo código para aplicaciones en línea y Windows con poca o ninguna modificación. Es un producto comercial.

phc-win

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

La extensión PHP bcompiler se usa para compilar código de script PHP en bytecode PHP. Este bytecode se puede incluir como cualquier archivo php siempre que se cargue la extensión bcompiler. Una vez que se han creado todos los archivos de bytecode, se utiliza un Embeder modificado para empaquetar todos los archivos del proyecto en el programa exe.

Requiere

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

ExeOutput

http://www.exeoutput.com/

Comercial

WinBinder

http://winbinder.org/

WinBinder es una extensión de código abierto para PHP, el lenguaje de programación de script. Permite a los programadores de PHP crear fácilmente aplicaciones nativas de Windows, produciendo resultados rápidos y gratificantes con el mínimo esfuerzo. Incluso los guiones cortos con unas pocas docenas de líneas pueden generar un programa útil, gracias a la potencia y flexibilidad de PHP.

PHPDesktop

https://github.com/cztomczak/phpdesktop

PHP Desktop es un proyecto de código abierto fundado por Czarek Tomczak en 2012 para proporcionar una forma de desarrollar aplicaciones de escritorio nativas utilizando tecnologías web como PHP, HTML5, JavaScript y SQLite. Este proyecto es más que un simple compilador de PHP a EXE, incorpora un navegador web (Internet Explorer o Chrome integrado), un servidor web Mongoose y un intérprete PHP. El flujo de trabajo de desarrollo al que está acostumbrado sigue siendo el mismo, el paso de convertir un sitio web existente en una aplicación de escritorio es básicamente una cuestión de copiarlo en el directorio "www /". El uso de la base de datos SQLite es opcional, puede incorporar la base de datos mysql / postgresql en el instalador de la aplicación.

PHP Nightrain

https://github.com/kjellberg/nightrain

Con PHP Nightrain podrá implementar y ejecutar aplicaciones web HTML, CSS, JavaScript y PHP como una aplicación de escritorio nativa en Windows, Mac y los sistemas operativos Linux. ¡Los marcos PHP populares (por ejemplo, CakePHP, Laravel, Drupal, etc.) son compatibles!

"tenedor" phc-win

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

Una versión más o menos bifurcada de phc-win, utiliza las mismas técnicas que phc-win pero admite casi todas las versiones modernas de PHP. (5.3, 5.4, 5.5, 5.6, etc.) También puede usar Enigma VB para combinar php5ts.dll con su exe, así como UPX comprimirlo. Por último, tiene win32std y winbinder compilados estáticamente en PHP.

EDITAR

Otra opción es usar

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

un compilador en línea que puede construir ejecutables para varias plataformas diferentes, desde varios lenguajes diferentes, incluido PHP

TideSDK

http://www.tidesdk.org/

TideSDK es en realidad el proyecto de Titanium Desktop renombrado. Titanium se mantuvo enfocado en los dispositivos móviles y abandonó la versión de escritorio, que fue asumida por algunas personas que lo han abierto y lo llamaron TideSDK.

En general, TideSDK utiliza HTML, CSS y JS para representar aplicaciones, pero admite lenguajes con script como PHP, como un módulo de complemento, así como otros lenguajes de script como Python y Ruby.

Mark Baker
fuente
Puedo confirmar que phc-win funciona para crear un archivo exe de consola con código PHP 5.3. Solo tenga el script PHP en la misma carpeta que php-win exe.
Dejv
Usé el compilador de bambalam. Es bastante genial y fácil y también es compatible con win-builder, pero no es compatible con php5 :(
m3nda
PHP-Nightrain es una muy buena alternativa a PHPDesktop, y es multiplataforma (Windows, OSX, Linux). Si bien tenía una mala reputación debido a la dependencia de Java, ahora se ha cambiado a Python como envoltorio, y es una muy buena opción para desarrollar software multiplataforma basado en PHP. - github.com/naetech/nightrain
Taapo
1
Acabo de perder todo un domingo con un problema / comportamiento de Bambalam. En esta instalación se ejecuta como 50 veces al día. Crea archivos temporales con un tamaño de nombre fijo que nunca elimina (4 caracteres) ... no se obtienen más nombres de archivos gratuitos. Procmon de Sysinternals ayudó a descubrir qué sucedió. No fue fácil y deja una mala vibra en Bambalam.
João
1
buen trabajo hombres! Probaré algunos de ellos. ¿Cuál es el mejor para usar la base de datos mysql con el sitio php?
garatu
12

Tuve problemas con la mayoría de las herramientas en otras respuestas, ya que todas están muy desactualizadas.

Si necesita una solución que "simplemente funcione", empaque una versión básica de php con su proyecto en un archivo WinRar SFX, configúrelo para extraer todo a un directorio temporal y ejecútelo php your_script.php.

Para ejecutar un script básico, los únicos archivos necesarios son php.exey php5.dll(o php5ts.dllsegún la versión).

Para agregar extensiones, empaquételas junto con un archivo php.ini:

[PHP]
extension_dir = "."
extension=php_curl.dll
extension=php_xxxx.dll
...
toster-cx
fuente
hola tu solución es muy interesante. Es similar al servidor web quickphp. ¿Tienes un ejemplo simple para eso? Espero que puedas proporcionar una fuente. Buena idea por cierto.
Edang Jeorlie
¡Esto es realmente interesante! Pero la cuestión es que OP no quiere "regalar el código fuente", e incluso un novato podría extraer el script de SFX.
Jay Dadhania
8

Intenté la mayoría de las soluciones dadas en la primera respuesta, la única que funcionó para mí y no es comercial es php-desktop .

¡Simplemente puse mis archivos php en la www/carpeta, cambié el nombre .exey pude ejecutar mi php como un exe!

También hay una documentación completa, soporte actualizado, compatibilidad con Windows y Linux, y las opciones se pueden cambiar fácilmente.

538ROMEO
fuente
2
PHP Desktop ahora es compatible con Linux, consulte su versión inicial: github.com/cztomczak/phpdesktop/releases/tag/linux-v72.0
Czarek Tomczak
6

RapidEXE es exactamente para este trabajo:

Convierte un proyecto php en un exe independiente. Tuve suficiente de todos los otros compiladores, los probé uno por uno y todos me decepcionaron de una manera u otra. ¡Sea mi invitado, los comentarios son siempre bienvenidos!

Nota al margen: el mecanismo detrás de esto es bastante similar al enfoque WinRAR SFX; extraer el motor, extraer la fuente, luego ejecutar. Es más rápido y fácil trabajar con él. Compilación de un comando, comprimido, desempaquetado inteligente, limpieza automática, configuración fácil, control total del motor y versión de php; También extensible con un mínimo esfuerzo.

¡Feliz desarrollo!

dkellner
fuente
Intenté usar su herramienta, pero aparece el siguiente errorCannot find myself (D:\Desktop\phpflexer\phpflexer.exe)
Ghola
Es prometedor, pero ¿podría agregar algunas bibliotecas a esto? Por ejemplo, necesito GD2 para que mis scripts puedan funcionar en imágenes.
Tom
@Tom: claro, hay una nueva versión y si tienes ganas de probarla puedo darte un enlace de descarga. (Sin malware, lo prometo). En realidad, es mucho mejor ahora y es php 7.2, además creo que será capaz de manejar otros idiomas. Mi gmail es kellnerdenes.
dkellner
1
¡Intenté esto, una solución bastante ordenada para scripts de línea de comandos compilados! He estado usando ExeOutput4PHP para la mayoría de mis proyectos de GUI durante bastante tiempo, pero para las aplicaciones de consola RapidEXE también se ve muy bien, si no mejor.
Jay Dadhania
1
@JayDadhania ¡Música para mis oídos! Versión 3 próximamente, ¡estad atentos!
dkellner
2

ExeOutput también puede convertir sitios web PHP en aplicaciones y software de Windows

Convierta sitios web PHP en aplicaciones y software de Windows

Las aplicaciones realizadas con ExeOutput para PHP ejecutan scripts PHP, aplicaciones PHP y sitios web PHP de forma nativa, y no requieren un servidor web, un navegador web o distribución PHP. Son independientes y funcionan en cualquier computadora con versiones recientes de Windows.

ExeOutput para PHP es un potente compilador de sitios web que funciona con todos los elementos que se encuentran en sitios modernos: scripts PHP, JavaScript, HTML, CSS, XML, archivos PDF, Flash, videos Flash, videos Silverlight, bases de datos e imágenes. Combinando estos elementos con PHP Runtime y Extensiones PHP, ExeOutput para PHP crea un archivo EXE que contiene su aplicación completa.

http://www.exeoutput.com/

srinath madusanka
fuente
1

Mi experiencia en este asunto me dice que la mayoría de estos programas funcionan bien con proyectos pequeños.
¿Pero qué hay de los grandes proyectos? por ejemplo: Zend Framework 2 y algunas cosas por el estilo.
Algunos de ellos necesitan un navegador para ejecutarse y es difícil decirle al cliente "¡escriba http://localhost/" en la barra de direcciones de su navegador!

Creo un proyecto simple para hacer esto: PHPPy

Esta no es una forma completa de crear un archivo ejecutable independiente para ejecutar proyectos php, pero le ayuda a hacerlo.
No pude compilar el archivo Python con PyInstaller o Py2exe en un archivo .exe, espero que puedas.
No necesita archivos ejecutables de uniformserver.

M Rostami
fuente
44
Crear un shorcut para localhost es un trabajo duro, ¿no? :) De todos modos tienes razón en "funciona bien en pequeños proyectos". El exclusivo completo "como quieras" es el phpdesktop.
m3nda
1

El PHP Nightrain actual (4.0.0) está escrito en Python y utiliza las bibliotecas wxPython. Hasta ahora, wxPython ha funcionado bien para lograr que PHP Nightrain esté donde está hoy, pero para llevar PHP Nightrain a su siguiente nivel, ¡estamos presentando un hermano de PHP Nightrain, PHPWebkit!

Es una actualización de PHP Nightrain.

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

zeddex
fuente