Converter um script PHP em um executável independente do Windows

128

Eu quero automatizar uma tarefa bastante simples. Para isso, escrevi um pequeno script PHP que corro a partir da linha de comando usando o PHP-CLI. Agora, quero entregar esse script a alguém, mas não quero:

  • doar o código fonte
  • peça a ele para instalar o PHP no sistema

Existe uma maneira de criar uma versão .exe do script PHP. Eu realmente não estou muito preocupado com a descompilação; Estou mais preocupado em pedir às pessoas para instalar e configurar o PHP.

Salman A
fonte
2
você já ouviu falar sobre bamcompile (r)?
SagarPPanchal
1
Usam o Bambalam há vários anos. Ele está parado há quase uma eternidade agora - e mais ao ponto, é compatível apenas com o PHP4.4.4. No entanto, desde que você não precise de suporte UTF8 e similares e possa lidar com foreach quebrado () e alguns outros, ele deve funcionar para você. Observe que é impossível lidar com, por exemplo, nomes de arquivos UTF8 em um diretório, com o PHP4.4.4. Lembre-se também de que ele cria arquivos em% TEMP% que nunca são removidos (php [0-F] {2} .tmp), você precisará limpá-los.
Egon_Freeman
Os binários do PHP podem executar portably. Você pode apenas dizer às pessoas para extrair uma pasta inteira e criar um arquivo em lotes que execute algo como "php.exe -c php.ini script.php".
FluorescentGreen5

Respostas:

195

Torta de pêssego

http://www.peachpie.io

https://github.com/iolevel/peachpie

Peachpie é um compilador PHP 7 baseado em Roslyn pela Microsoft e baseado no popular Phalanger. Ele permite que o PHP seja executado no .NET / .NETCore, compilando o código PHP no MSIL puro.

Phalanger

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

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

https://github.com/devsense/phalanger

Phalanger é um projeto iniciado na Universidade Charles, em Praga, com o apoio da Microsoft. Ele compila o código-fonte escrito na linguagem de script PHP no código de bytes CIL (Common Intermediate Language). Ele lida com o início de um processo de compilação que é concluído pelo componente do compilador JIT do .NET Framework. Não trata da geração nem otimização de código nativo. Seu objetivo é compilar scripts PHP em assemblies .NET, unidades lógicas contendo código CIL e metadados.

Bambalam

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

O Bambalam PHP EXE Compiler / Embedder é uma ferramenta de linha de comando gratuita para converter aplicativos PHP em aplicativos .exe do Windows independentes. Os arquivos exe produzidos são totalmente independentes, sem necessidade de dll php etc. O código php é codificado usando a biblioteca Turck MMCache Encode, por isso é uma solução perfeita se você deseja distribuir seu aplicativo enquanto protege seu código-fonte. O conversor também é adequado para produzir arquivos .exe para aplicativos PHP em janelas (criados usando, por exemplo, a biblioteca WinBinder). Também é bom para criar servidores / clientes PHP Socket independentes (usando a extensão php_sockets.dll). NÃO é realmente um compilador no sentido de que não produz código de máquina nativo a partir de fontes PHP, mas funciona!

ZZEE PHPExe

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

O ZZEE PHPExe compila arquivos PHP, HTML, Javascript, Flash e outros arquivos da Web em ex-GUI do Windows. É possível desenvolver rapidamente aplicativos da GUI do Windows, empregando o paradigma da Web PHP familiar. Você pode usar o mesmo código para aplicativos online e Windows com pouca ou nenhuma modificação. É um produto comercial.

phc-win

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

A extensão PHP bcompiler é usada para compilar o código de script PHP no bytecode do PHP. Esse bytecode pode ser incluído como qualquer arquivo php, desde que a extensão bcompiler esteja carregada. Depois que todos os arquivos de bytecode foram criados, um Embeder modificado é usado para compactar todos os arquivos de projeto no programa exe.

Requer

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

ExeOutput

http://www.exeoutput.com/

Comercial

WinBinder

http://winbinder.org/

O WinBinder é uma extensão de código aberto do PHP, a linguagem de programação de scripts. Ele permite que programadores PHP construam facilmente aplicativos nativos do Windows, produzindo resultados rápidos e gratificantes com o mínimo de esforço. Mesmo scripts curtos com algumas dezenas de linhas podem gerar um programa útil, graças ao poder e flexibilidade do PHP.

PHPDesktop

https://github.com/cztomczak/phpdesktop

O PHP Desktop é um projeto de código aberto fundado por Czarek Tomczak em 2012 para fornecer uma maneira de desenvolver aplicativos de desktop nativos usando tecnologias da web como PHP, HTML5, JavaScript e SQLite. Este projeto é mais do que apenas um compilador PHP para EXE, ele incorpora um navegador da Web (Internet Explorer ou Chrome incorporado), um servidor da Web Mongoose e um intérprete de PHP. O fluxo de trabalho de desenvolvimento ao qual você está acostumado permanece o mesmo; a etapa de transformar um site existente em um aplicativo de desktop é basicamente uma questão de copiá-lo para o diretório "www /". Usando o banco de dados SQLite é opcional, você pode incorporar o banco de dados mysql / postgresql no instalador do aplicativo.

PHP Nightrain

https://github.com/kjellberg/nightrain

Usando o PHP Nightrain, você poderá implantar e executar aplicativos da Web HTML, CSS, JavaScript e PHP como um aplicativo de desktop nativo nos sistemas operacionais Windows, Mac e Linux. Frameworks PHP populares (por exemplo, CakePHP, Laravel, Drupal, etc ...) são bem suportados!

phc-win "garfo"

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

Uma versão mais ou menos bifurcada do phc-win, ele usa as mesmas técnicas do phc-win, mas suporta quase todas as versões modernas do PHP. (5.3, 5.4, 5.5, 5.6, etc) Ele também pode usar o Enigma VB para combinar o php5ts.dll com o seu exe, assim como o UPX o comprime. Por fim, ele tem o win32std e o winbinder compilados estaticamente no PHP.

EDITAR

Outra opção é usar

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

um compilador online que pode construir executáveis ​​para várias plataformas diferentes, a partir de várias linguagens diferentes, incluindo PHP

TideSDK

http://www.tidesdk.org/

TideSDK é na verdade o projeto Titanium Desktop renomeado. O Titanium permaneceu focado no celular e abandonou a versão para desktop, que foi adquirida por algumas pessoas que o abriram e o chamaram de TideSDK.

Geralmente, o TideSDK usa HTML, CSS e JS para renderizar aplicativos, mas suporta linguagens de script como PHP, como um módulo de plug-in, bem como outras linguagens de script como Python e Ruby.

Mark Baker
fonte
Posso confirmar que o phc-win funciona para criar o arquivo exe do console com o código PHP 5.3. Basta ter o script PHP na mesma pasta que o php-win exe.
Dejv
Eu usei o compilador bambalam. É bem legal e fácil e também suporta o win-builder, mas não suporta o php5 :(
m3nda
O PHP-Nightrain é uma alternativa muito boa ao PHPDesktop - e é multiplataforma (Windows, OSX, Linux). Embora tivesse uma má reputação devido à dependência do Java, agora mudou para Python como invólucro e é uma ótima opção para o desenvolvimento de software de plataforma cruzada baseado em PHP. - github.com/naetech/nightrain
Taapo
1
Acabei de perder um domingo inteiro com um problema / castor da Bambalam. Nesta instalação, ele é executado 50 vezes por dia. Ele cria arquivos temporários com tamanho de nome fixo que ele nunca exclui (4 caracteres) ... não resulta mais em nomes de arquivos gratuitos. O processo da Sysinternals ajudou a descobrir o que aconteceu. Não foi fácil e deixa uma vibe ruim no Bambalam.
João
1
excelente trabalho homens! Vou tentar alguns deles. Qual é o melhor para usar o banco de dados mysql com o site php?
garatu
12

Eu tive problemas com a maioria das ferramentas em outras respostas, pois todas estão desatualizadas.

Se você precisar de uma solução que "funcione" apenas, leve uma versão básica do php com o seu projeto em um arquivo WinRar SFX, configure-o para extrair tudo para um diretório temporário e executar php your_script.php.

Para executar um script básico, os únicos arquivos necessários são php.exee php5.dll(ou php5ts.dlldependendo da versão).

Para adicionar extensões, leve-as junto com um arquivo php.ini:

[PHP]
extension_dir = "."
extension=php_curl.dll
extension=php_xxxx.dll
...
toster-cx
fonte
oi sua solução é muito interessante. É semelhante ao servidor da web quickphp. Você tem um exemplo simples para isso? Espero que você possa fornecer uma fonte. Bela idéia, a propósito.
Edang Jeorlie
Isso é realmente interessante! Mas o problema é que o OP não quer "revelar o código-fonte", e mesmo um novato pode extrair o script do SFX.
Jay Dadhania
8

Eu tentei a maioria das soluções dadas na 1ª resposta, a única que funcionou para mim e não é comercial é o php-desktop .

Eu simplesmente coloquei meus arquivos php na www/pasta, mudei o nome .exee fui capaz de executar meu php como um exe !!

Também existe uma documentação completa, suporte atualizado, compatibilidade com Windows e Linux e opções podem ser facilmente alteradas.

538ROMEO
fonte
2
O PHP Desktop agora suporta Linux, veja seu lançamento inicial: github.com/cztomczak/phpdesktop/releases/tag/linux-v72.0
Czarek Tomczak
6

O RapidEXE é exatamente para este trabalho:

Ele converte um projeto php em um exe independente. Eu já tive o suficiente de todos os outros compiladores, tentei um por um e todos me decepcionaram de um jeito ou de outro. Seja meu convidado, feedbacks são sempre bem-vindos!

Nota lateral: o mecanismo por trás dele é bastante semelhante à abordagem WinRAR SFX; extrair mecanismo, extrair fonte e executar. É apenas mais rápido e fácil de trabalhar. Compilação de um comando, descompactação inteligente e compactada, limpeza automática, configuração fácil, controle total do mecanismo e versão do php; também extensível com o mínimo esforço.

Feliz desenvolvimento!

dkellner
fonte
Eu tentei usar sua ferramenta, mas eu recebo o seguinte erroCannot find myself (D:\Desktop\phpflexer\phpflexer.exe)
Ghola
É promissor, mas você poderia adicionar algumas bibliotecas a isso? Por exemplo, eu preciso do GD2 para que meus scripts possam trabalhar com imagens.
Tom
@ Tom: claro, há uma nova versão e, se você quiser testá-la, posso fornecer um link para download. (Nenhum malware, eu prometo.) Na verdade, é muito melhor agora e é php 7.2, além disso, acho que será capaz de lidar com outros idiomas. Meu gmail é kellnerdenes.
dkellner
1
Apenas tentei, uma solução bastante elegante para scripts de linha de comando compilados! Estou usando o ExeOutput4PHP na maioria dos meus projetos de GUI há algum tempo, mas para aplicativos de console o RapidEXE também parece ótimo, se não melhor.
Jay Dadhania
1
@JayDadhania Música para meus ouvidos! Versão 3 em breve, fique atento!
dkellner
2

ExeOutput também pode transformar sites PHP em aplicativos e software para Windows

Transforme sites PHP em aplicativos e software do Windows

Os aplicativos criados com o ExeOutput para PHP executam scripts PHP, aplicativos PHP e sites PHP nativamente e não requerem um servidor da web, um navegador da Web ou distribuição do PHP. Eles são independentes e funcionam em qualquer computador com versões recentes do Windows.

O ExeOutput for PHP é um poderoso compilador de sites que funciona com todos os elementos encontrados em sites modernos: scripts PHP, JavaScript, HTML, CSS, XML, arquivos PDF, Flash, vídeos Flash, vídeos Silverlight, bancos de dados e imagens. Combinando esses elementos com o PHP Runtime e as extensões do PHP, o ExeOutput for PHP cria um arquivo EXE que contém seu aplicativo completo.

http://www.exeoutput.com/

srinath madusanka
fonte
1

Minha experiência nesse assunto me diz que a maioria desses softwares funciona bem em pequenos projetos.
Mas e os grandes projetos? por exemplo: Zend Framework 2 e algumas coisas assim.
Alguns deles precisam do navegador para rodar e isso é difícil de dizer ao cliente "digite http://localhost/" na barra de endereços do navegador !!

Eu crio um projeto simples para fazer isso: PHPPy

Esta não é uma maneira completa de criar um arquivo executável autônomo para executar projetos php, mas ajuda você a fazer isso.
Não consegui compilar arquivos python com PyInstaller ou Py2exe em arquivos .exe, espero que você possa.
Você não precisa de arquivos executáveis ​​uniformserver.

M Rostami
fonte
4
Criar um atalho para o host local é um trabalho árduo, não é? :) De qualquer forma, você tem motivos para "funciona bem em pequenos projetos". O único completo "como você quiser" é o phpdesktop.
M3nda
1

O PHP Nightrain atual (4.0.0) é escrito em Python e usa as bibliotecas wxPython. Até agora, o wxPython tem trabalhado bem para levar o PHP Nightrain aonde está hoje, mas para levar o PHP Nightrain ao próximo nível, estamos introduzindo um irmão do PHP Nightrain, o PHPWebkit!

É uma atualização para o PHP Nightrain.

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

zeddex
fonte