PHP作为独立的应用程序(二进制,编译,打包,主机上没有php) - php

如果我想通过安装程序(OS的软件包系统)分发PHP应用程序,应该如何进行?我不希望PHP文件存在,只能运行应用程序,因此,当我在控制台中键入“ app”时,它最终是正在启动应用程序,而无需在系统上安装PHP(无需在主机上安装php)。我还希望该应用程序具有可修补的字节码,因此它是部分装入的,在需要时加载,并且仅在更新时需要替换部分。

我现在要做的是:

->Compile PHP with extensions for specific platform.
->Make binary application which launches '/full/php app' when app is launched.
->Pack it in installer in a way, that there would be binary added to path when added, launching specific installation of PHP which is alongside the app with argument of start point->App would be running.

问题是:

也许我不希望暴露我的PHP文件(在应用程序中,无论如何都会有可用的源代码)是否有一些现成的东西可以做到这一点?有没有比我建议的更好的方法?

备选方案:修改OP缓存以与“打包”应用程序一起使用,以将字节代码传递给已修改的OP缓存,后者仅读取缓存。

参考方案

对于几乎相同的问题,我的建议是我刚刚完成的一个小工具。 (哦,是的,我尝试了所有其他方法,但它们又旧又生锈,有时它们陷入了4.x语法中,没有支持,没有适当的文档,等等)

所以这是RapidEXE:

http://deneskellner.com/sw/rapidexe

按照传统的方式,它不是真正的编译器,只是美化的打包程序,而是完全满足您的需求:输出exe将是独立的,可随身携带所有内容并透明地构建临时运行时环境。不用担心,这一切发生得非常快。

它默认使用PHP 7.2 / Win64,但也具有5.x,以实现XP兼容性。
显然,它是免费软件。 (MIT许可证。)

(之所以这样说,是因为我不想让任何人认为我在做广告或其他事情。我花了几分钟阅读了有关自有产品答案的指南,而我试图在此遵守《绝地法典》。 )

然而...

我还希望该应用程序具有可修补的字节码,因此它是部分装入的,在需要时加载,并且仅在更新时需要替换部分。

重新编译exe更容易。当然,您可以提取有效载荷片段,但是源包是一个很大的拉链。单独处理似乎没有真正的优势。重新编译项目只是一个命令。

也许我不想公开我的PHP文件(在应用程序中,无论如何都会有可用的源代码)

在这种情况下,exe包含压缩的源,但最终它们被提取到临时文件夹中。它们在运行后会立即被删除,但是,这绝对不是保护。混淆似乎是唯一可行的选择。

如果出现问题,请随时在developer-at-deneskellner-dot-com上留言或给我留言。 (我的意思是,我刚刚完成了它,它是全新的,可能行为不当,因此暂时将其视为Beta版。)

编译愉快!

PHP getallheaders替代 - php

我正在尝试从服务器上的apache切换到nginx。唯一的问题是我在PHP脚本中使用的getallheaders()函数,该函数不适用于Nginx。我已经尝试过用户在getallheaders函数上的php站点上提供的注释,但这并不返回所有请求标头。请告诉我如何解决这个问题。我真的想切换到Nginx。 参考方案 您仍然可以使用它,但是您必须像这里一样重新定义…

php Singleton类实例将在多个会话中保留吗? - php

举一个简单的例子,如果我想计算一个不使用磁盘存储的脚本的命中次数,我可以使用静态类成员来执行此操作吗?用户1:<?php $test = Example::singleton(); $test->visits++; ?> 用户2:<?php $test = Example::singleton(); $test->visits+…

PHP:将字符串拆分为字母和数字部分的最佳方法 - php

我有几个格式的字符串AA11 AAAAAA1111111 AA1111111 分离字符串的字母和数字部分的最佳方法(最有效)? 参考方案 如果它们都是一系列字母,然后是一系列数字,并且没有非字母数字字符,那么sscanf()可能比regexp更有效$example = 'AAA11111'; list($alpha,$numeric) =…

php-casperjs获取内部文本 - php

我正在为casperjs使用php包装器-https://github.com/alwex/php-casperjs我正在网上自动化一些重复的工作,我需要访问一个项目的innerText,但是我尚不清楚如何从casperjs浏览器访问dom。我认为在js中我会var arr = document.querySelector('label.input…

PHP strtotime困境 - php

有人可以解释为什么这在我的服务器上输出为true吗?date_default_timezone_set('Europe/Bucharest'); var_dump( strtotime('29.03.2015 03:00', time()) === strtotime('29.03.2015 04:00�…