phar 存档中的静态内容

Posted

技术标签:

【中文标题】phar 存档中的静态内容【英文标题】:Static content inside phar archive 【发布时间】:2011-10-10 15:02:53 【问题描述】:

我只是想知道将静态内容添加到 phar 档案(图像、javascripthtml 文件)是否合法。如果是这样,我如何让他们为客户服务?

目前我看到的唯一例子是:

<?php
header('Content-type: image/jpeg');
echo file_get_contents('phar:///fullpath/to/coollibrary.phar/images/wow.jpg');
?>

但我想这不是一条路。

更新: 以防万一有人会尝试做同样的事情。这段代码集作为 phar 存档的存根对我有用:

<?php
    Phar::interceptFileFuncs();
    Phar::mungServer(array('REQUEST_URI'));
    Phar::webPhar();
    __HALT_COMPILER();
?>

phar 存档中的所有静态内容仍然通过 php 解释器,但至少不需要手动设置 header mime 类型和使用 readfile() 提供静态文件内容。 phar 存根中的那些函数使它看起来透明。

【问题讨论】:

【参考方案1】:

但我想这不是一条路。

因为可以在 phars 中查看的唯一内容是 PHP,所以让 PHP 提取内容并回显结果几乎是唯一的方法。

您可能会发现the PHP manual page on the PHAR extension 很有用,而the webPhar method 特别有启发性。 interceptFileFuncs 也很方便。

【讨论】:

不一定是唯一的方法,您仍然可以添加静态文件缓存并使用.htaccess 文件或发送x-sendfile 标头。我很好奇 phar 对大文件有什么作用,它是否通过将它们发送到输出来在内存中读取它们?他们是否有内存或超时问题?

以上是关于phar 存档中的静态内容的主要内容,如果未能解决你的问题,请参考以下文章

压缩后如何立即使用 Phar 解压缩存档?

创建 tar 存档时 phar 排除目录

如何将动态 (PHP) 网站存档为静态 HTML? [关闭]

如何从 asar 存档中提供静态文件

在现代CMake项目中存档静态依赖项

无法启用 Phar 写入