PHP应用程序在一个文件中

时间:2018-02-10 11:47:18

标签: php symfony phar

我想在一个文件中创建php app(包含composer和一些libs)。 首先我尝试的是 phar

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

我的问题是:

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

  2. 还有其他解决方案可以在一个php文件中打包整个ip

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

    PS。我正在寻找不接触的解决方案.htaccess(没有修改)

1 个答案:

答案 0 :(得分:0)

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

几点提示。

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

你需要的是对Phar本身(http://php.net/manual/en/class.phar.php)的一点了解,特别是存根。 Stub是在包含/需要文件时(当您将phar文件创建为类/资源库时)或执行期间执行的入口点(通过CLI / web,无关紧要)。 看看http://php.net/manual/en/phar.setdefaultstub.php! 请注意,通过phar:// protocole访问非php资源比从驱动器直接获取它更慢,因为它需要php跳转到phar:// stream(基本上是phar复制到内存并解压缩)并正确提取你的内容需要。让PHP参与检索像CSS文件这样的静态资源是如此之慢。 IMO只为小型非生产工具做,这需要超级简单的共享。像队列/数据库管理器一样。

当然,您需要注册phar包含的类的自动加载器,然后您也可以同时启动+启动应用程序。

超级小,旧的,糟糕的例子我的方法,phar文件只包含库,而不是bootstrap / config: https://github.com/keradus/PharBuilder 如今,你可能想要使用https://github.com/box-project/box2代替。

请注意,如果你要在你的服务器上暴露phar(在任何选项,应用程序或只是lib),请确保将服务器配置为不提供可下载内容的文件,例如apache在5年前默认这样做(没有线索)什么是当前的行为)