PHP 单个文件中的应用程序

PHP Application in a single file

我想在单个文件中创建 php 应用程序(带有作曲家和一些库)。 首先我尝试的是 phar.

很棒,但是当我在浏览器中输入 .phar(文件名可以更改为 .php)文件时,它会将我重定向到默认存根(something.phar/www/index.php),没问题,但是有一些 .htaccess 重定向规则(例如 symfony 3 的默认 .htacces)我得到 404 错误(因为这个文件不存在并且 htaccess 重定向到框架)

我的问题是:

  1. 任何人都见过使用单文件应用程序 (phar) 的解决方案 symfony3 .htaccess 或类似的?

  2. 是否有任何其他解决方案可以将整个 ip 打包到一个 php 文件中 ?

PS。创建包含 .phar 的新 .php 文件不起作用

PS。我正在寻找不涉及 .htaccess 的解决方案(那里没有修改)

虽然它并不总是有意义,但有时确实如此,因此我不会写你应该做还是不做,完全取决于你;)

一些提示。

首先,您可以使其完全成为一个文件的 webapp,或者排除 bootstrap 文件(如 index.php)+ 可选配置,并且只将库放入专用的 phar 文件中。 虽然一个文件很好,而且超级容易分发,但拥有加载配置的专用索引文件更灵活。

您需要的是关于 Phar 本身的一些知识 (http://php.net/manual/en/class.phar.php),尤其是存根。 Stub 是文件为 included/required 时执行的入口点(当您将 phar 文件创建为 classes/resources 的库时),或在执行期间(通过 CLI/web,无关紧要)。 看看http://php.net/manual/en/phar.setdefaultstub.php! 请注意,通过 phar:// 协议访问非 php 资源比直接从驱动器获取资源要慢,因为它需要 php 跳转到 phar:// 流(基本上是 phar 复制到内存中并解压)并正确提取您需要的内容。让 php 参与检索像 CSS 文件这样的静态资源是如此缓慢。 IMO 只为小型非生产工具做这件事,这需要超级简单的共享。喜欢 queue/DB 经理。

确定您需要注册 phar 包含的 类 的自动加载器,那么也许您还想 bootstrap+启动应用程序。

我的 phar 文件仅包含库而不包含库的方法的超小、陈旧和蹩脚的示例 bootstrap/config: https://github.com/keradus/PharBuilder 现在,您可能想改用 https://github.com/box-project/box2

请注意,如果您要在您的服务器上公开 phar(在任何选项、应用程序或只是 lib 中),请确保将您的服务器配置为不将文件作为可下载内容提供,例如,apache 在 5 年前默认这样做(不知道当前的行为是什么)