将PHP脚本转换为独立的Windows可执行文件


128

我想自动化一个相当简单的任务。为此,我编写了一个小的PHP脚本,该脚本从命令行使用PHP-CLI运行。现在,我想将此脚本移交给某人,但我不想:

  • 放弃源代码
  • 请他在系统上安装PHP

有没有一种方法来创建PHP脚本的.exe版本。我真的不太担心反编译。我更担心要求人们安装和配置PHP。


2
您听说过bamcompile(r)吗?
SagarPPanchal

1
已经使用Bambalam多年了。它已经被拖延了很长时间了,更重要的是,它仅与PHP4.4.4兼容。但是,只要您不需要UTF8和类似的支持,并且可以处理损坏的foreach()等,它就可以为您服务。请注意,使用PHP4.4.4无法处理目录中的UTF8文件名。还要记住,它会以%TEMP%创建从未删除的文件(php [0-F] {2} .tmp),您需要清理它们。
Egon_Freeman

PHP的二进制文件可以可移植地运行。您可以告诉人们提取整个文件夹并创建一个批处理文件,该批文件执行类似于“ php.exe -c php.ini script.php”的文件。
FluorescentGreen

Answers:


195

桃子派

http://www.peachpie.io

https://github.com/iolevel/peachpie

Peachpie是基于Microsoft Roslyn并从流行的Phalanger中提取的PHP 7编译器。通过将PHP代码编译为纯MSIL,它允许PHP在.NET / .NETCore中执行。

法郎格

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

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

https://github.com/devsense/phalanger

Phalanger是一个项目,始于布拉格的查尔斯大学,并得到了Microsoft的支持。它将以PHP脚本语言编写的源代码编译为CIL(通用中间语言)字节代码。它处理由.NET Framework的JIT编译器组件完成的编译过程的开始。它不涉及本机代码生成或优化。其目的是将PHP脚本编译成.NET程序集,即包含CIL代码和元数据的逻辑单元。

班巴拉姆

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

Bambalam PHP EXE编译器/嵌入器是一个免费的命令行工具,用于将PHP应用程序转换为独立的Windows .exe应用程序。生成的exe文件是完全独立的,不需要php dll等。php代码使用Turck MMCache编码库进行编码,因此如果您想在保护源代码的同时分发应用程序,它是一个完美的解决方案。该转换器还适用于为窗口化PHP应用程序(例如使用WinBinder库创建)生成.exe文件。也适合制作独立的PHP Socket服务器/客户端(使用php_sockets.dll扩展名)。从某种意义上说,它并不是真正的编译器,它不会从PHP源代码中生成本机代码,但它可以工作!

ZZEE PHPExe

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

ZZEE PHPExe将PHP,HTML,Javascript,Flash和其他Web文件编译为Windows GUI exe。您可以通过使用熟悉的PHP Web范例快速开发Windows GUI应用程序。您可以对在线和Windows应用程序使用相同的代码,而几乎不需要修改。它是一种商业产品。

双赢

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

PHP扩展bcompiler用于将PHP脚本代码编译为PHP字节码。只要加载了bcompiler扩展名,就可以像任何php文件一样包含此字节码。创建完所有字节码文件后,将使用修改后的Embeder将所有项目文件打包到程序exe中。

需要

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

输出输出

http://www.exeoutput.com/

商业广告

WinBinder

http://winbinder.org/

WinBinder是脚本编程语言PHP的开源扩展。它使PHP程序员可以轻松构建本机Windows应用程序,并以最小的努力获得快速而有意义的结果。由于PHP的强大功能和灵活性,即使只有几十行的简短脚本也可以生成有用的程序。

PHP桌面

https://github.com/cztomczak/phpdesktop

PHP Desktop是Cz​​arek Tomczak在2012年创建的一个开源项目,旨在提供一种使用Web技术(例如PHP,HTML5,JavaScript和SQLite)开发本机桌面应用程序的方法。这个项目不仅仅是一个PHP到EXE的编译器,它还嵌入了一个Web浏览器(嵌入式Internet Explorer或Chrome),一个Mongoose Web服务器和一个PHP解释器。您习惯的开发工作流程保持不变,将现有网站转换为桌面应用程序的步骤基本上是将其复制到“ www /”目录中的问题。使用SQLite数据库是可选的,您可以在应用程序的安装程序中嵌入mysql / postgresql数据库。

PHP Nightrain

https://github.com/kjellberg/nightrain

使用PHP Nightrain,您将能够在Windows,Mac和Linux操作系统上部署和运行HTML,CSS,JavaScript和PHP Web应用程序作为本机桌面应用程序。很好地支持流行的PHP框架(例如CakePHP,Laravel,Drupal等)!

phc-win“叉子”

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

它是phc-win的一个或多或少的分支版本,它使用与phc-win相同的技术,但几乎支持所有现代PHP版本。(5.3、5.4、5.5、5.6等)它也可以使用Enigma VB将php5ts.dll与您的exe结合在一起,以及UPX对其进行压缩。最后,它已将win32std和winbinder静态地编译到PHP中。

编辑

另一种选择是使用

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

在线编译器,可以使用多种不同的语言(包括PHP)为多种不同的平台构建可执行文件

潮汐

http://www.tidesdk.org/

TideSDK实际上是重命名的Titanium Desktop项目。Titanium仍然专注于移动设备,放弃了台式机版本,该版本已被开源并将其称为TideSDK的一些人接管。

通常,TideSDK使用HTML,CSS和JS呈现应用程序,但它支持PHP等脚本语言作为插件模块,以及其他脚本语言如Python和Ruby。


我可以确认phc-win可用于使用PHP 5.3代码创建控制台exe文件。只需将PHP脚本与php-win exe放在同一文件夹中即可。
Dejv 2013年

我使用了bambalam编译器。它很酷,很容易,也支持win-builder,但是不支持php5 :(
m3nda 2014年

PHP-Nightrain是PHPDesktop的非常好的替代品-并且是跨平台的(Windows,OSX,Linux)。尽管由于对Java的依赖而声誉不佳,但现在它已转换为Python作为包装器,并且是开发基于PHP的跨平台软件的绝佳选择。- github.com/naetech/nightrain
Taapo

1
刚因一个Bambalam问题/行为失去了整个星期天。在此安装中,它每天执行50次。它创建的临时文件的名称大小固定,他从不删除(4个字符)...结果没有更多的免费文件名。Sysinternals procmon帮助弄清了发生了什么。这并不容易,并给Bambalam留下不好的氛围。
若奥

1
好男人!我会尝试其中的一些。哪一个最适合在php网站上使用mysql数据库?
garatu '16

12

其他答案中的大多数工具都存在问题,因为它们都已经过时了。

如果您需要一个“可以正常使用”的解决方案,请将项目的准系统版本的php打包到WinRar SFX归档文件中,将其设置为将所有内容提取到一个临时目录中并执行php your_script.php

要运行基本脚本,唯一需要的文件是php.exephp5.dll(或php5ts.dll取决于版本)。

要添加扩展,请将它们与php.ini文件一起打包:

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

您好您的解决方案是非常有趣的。类似于quickphp Web服务器。你有简单的例子吗?我希望您能提供一个来源。顺便说一句好主意。
Edang Jeorlie '17

这真的很有趣!但事实是,OP不想“放弃源代码”,即使是菜鸟也可以从SFX中提取脚本。
杰伊·达达尼亚

8

我想大部分是在第1个答案给定的解决方案中,只有一个是工作对我来说,是非商业性的PHP的桌面

我只是将我的php文件放到该www/文件夹中,更改了它的名称,.exe并能够将php作为exe运行!

此外,还有完整的文档,最新的支持,Windows和Linux的兼容性以及可以轻松更改的选项。


2
PHP Desktop现在支持Linux,请参见其初始版本:github.com/cztomczak/phpdesktop/releases/tag/linux-v72.0
Czarek Tomczak

6

RapidEXE正是适合此工作的:

它将php项目转换为独立的exe。我受够了所有其他编译器,一个接一个地尝试,它们都使我失望。成为我的客人,欢迎反馈!

旁注:其背后的机制与WinRAR SFX方法非常相似;提取引擎,提取源,然后运行。使用起来更快捷,更容易。一键编译,压缩,智能解压缩,自动清理,轻松配置,完全控制php引擎和版本;也可以以最小的努力进行扩展。

发展愉快!


我尝试使用您的工具,但出现以下错误Cannot find myself (D:\Desktop\phpflexer\phpflexer.exe)
Ghola '18

这很有希望,但是您可以为此添加一些库吗?例如,我需要GD2,以便我的脚本可以在图像上运行。
汤姆,

@Tom:当然,有一个新版本,如果您想测试它,我可以给您下载链接。(我保证,没有恶意软件。)实际上它现在好得多了,它是php 7.2,而且我认为它将能够处理其他语言。我的gmail是kellnerdenes。
dkellner '18

1
只需尝试一下,即可轻松完成编译后的命令行脚本的漂亮解决方案!我已经在大多数GUI项目中使用ExeOutput4PHP了相当长的时间,但是对于控制台应用程序,RapidEXE看起来也很棒,即使不是更好。
杰伊·达达尼亚

1
@JayDadhania音乐在我耳边!版本3即将推出,敬请期待!
dkellner

2

ExeOutput还可以将PHP网站变成Windows应用程序和软件

将PHP网站变成Windows应用程序和软件

用ExeOutput for PHP制作的应用程序本机运行PHP脚本,PHP应用程序和PHP网站,不需要Web服务器,Web浏览器或PHP发行版。它们是独立的,并且可以在具有最新Windows版本的任何计算机上使用。

ExeOutput for PHP是一个功能强大的网站编译器,可与现代网站上的所有元素一起使用:PHP脚本,JavaScript,HTML,CSS,XML,PDF文件,Flash,Flash视频,Silverlight视频,数据库和图像。将这些元素与PHP运行时和PHP扩展相结合,用于PHP的ExeOutput将构建一个包含完整应用程序的EXE文件。

http://www.exeoutput.com/


1

我在这件事上的经验告诉我,大多数这些软件在小型项目中都能很好地工作。
但是大型项目呢?例如:Zend Framework 2和类似的东西。
其中一些需要浏览器才能运行,这很难http://localhost/在浏览器地址栏中告诉客户“请输入”!

我创建一个简单的项目来做到这一点:PHPPy

这不是创建用于运行php项目的独立可执行文件的完整方法,但是可以帮助您完成此操作。
我无法使用PyInstaller或Py2exe将python文件编译为.exe文件,希望可以。
您不需要统一服务器可执行文件。


4
创建一个本地主机的快捷方式,这是一项艰巨的工作,不是吗?:)无论如何,您都有理由“在小型项目上运作良好”。唯一的完整“随心所欲”是phpdesktop。
m3nda 2014年

1

当前的PHP Nightrain(4.0.0)用Python编写,并使用wxPython库。到目前为止,wxPython一直在努力使PHP Nightrain保持今天的状态,但是为了将PHP Nightrain推向新的高度,我们正在引入PHP Nightrain的同级产品,即PHPWebkit!

它是PHP Nightrain的更新。

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.