PHP 单个文件中的应用程序
PHP Application in a single file
我想在单个文件中创建 php 应用程序(带有作曲家和一些库)。
首先我尝试的是 phar.
很棒,但是当我在浏览器中输入 .phar(文件名可以更改为 .php)文件时,它会将我重定向到默认存根(something.phar/www/index.php),没问题,但是有一些 .htaccess 重定向规则(例如 symfony 3 的默认 .htacces)我得到 404 错误(因为这个文件不存在并且 htaccess 重定向到框架)
我的问题是:
任何人都见过使用单文件应用程序 (phar) 的解决方案
symfony3 .htaccess 或类似的?
是否有任何其他解决方案可以将整个 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 年前默认这样做(不知道当前的行为是什么)
我想在单个文件中创建 php 应用程序(带有作曲家和一些库)。 首先我尝试的是 phar.
很棒,但是当我在浏览器中输入 .phar(文件名可以更改为 .php)文件时,它会将我重定向到默认存根(something.phar/www/index.php),没问题,但是有一些 .htaccess 重定向规则(例如 symfony 3 的默认 .htacces)我得到 404 错误(因为这个文件不存在并且 htaccess 重定向到框架)
我的问题是:
任何人都见过使用单文件应用程序 (phar) 的解决方案 symfony3 .htaccess 或类似的?
是否有任何其他解决方案可以将整个 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 年前默认这样做(不知道当前的行为是什么)