PHP:从html引用phar存档内的静态文件

标签 php html file static phar

我尝试在我的应用程序中使用 phar,但对我来说有一个小问题。早些时候我做了一个 web 项目,将我的类和包含 html 文件的 php 文件放在 phar 中,但我无法将静态文件导入 phar 并从 html 标签中引用它们。我所做的是:

  • 创建了一个包含我的类(class)和 html 代码的 phar 文件。我创建了两个 stub ,用于 cli.php 中的 cli 访问和操作,以及用于 web 访问的 index.php(此文件需要其他 php 文件,显然与 html 代码相呼应)。

phar 构建 phing build.xml 的配置文件:

<pharpackage
    destfile="./target/${phar.file.name}.phar"
    basedir="./"
    webstub="index.php"
    clistub="index.php">
    <fileset refid="pharBuild"/> ... 

cli.php 文件是这样的:

<?php
 if ($argv[1] === "op1") {
   // do something
 ...

index.php 文件是这样的:

<?php 
if (php_sapi_name() == "cli") {
require_once "cli.php";
} else {
// prepare and print the web page. evidently some HTML tags.
  • 东西的配置文件夹...你知道:)
  • 用于图像、样式和内容的 Assets 文件夹。
  • 添加一个包含 phar 存档的 index.php 文件。我无法直接运行 phar 存档。

那么,如果我将其导入到 phar 文件中,我该如何访问我的图像、样式和 js?我想将 css/、 js/和 images/文件夹放入此 phar 中,并且不会过多更改当前代码,当 html 页面需要图像(如 <img src="IMAGE-LOCATION-I-DONT-KNOW"> )时,它将从我的文件中获取它phar 文件。

最佳答案

我不确定为什么您的设置不起作用,但我可以通过 PHAR 访问静态文件就好了。这是我得到的:

build.xml

<target name="package">
    <pharpackage basedir="." destfile="./my-project.phar" stub="phar_stub.php" compression="none">
        <fileset dir="src">
            <include name="**/**"/>
        </fileset>
        <fileset dir="vendor">
            <include name="**/**"/>
        </fileset>
        <fileset dir="public">
            <include name="**/**"/>
        </fileset>
    </pharpackage>
</target>

phar_stub.php

<?php

Phar::mungServer(['REQUEST_URI', 'SCRIPT_NAME']);
Phar::webPhar(null, __DIR__ . "/public/index.php");
__HALT_COMPILER();

srcvendor 包含类,public 包含 index.php(应用程序的入口点) 以及一个包含 css 和 js 的 resources 文件夹。

部署后,我可以通过以下方式访问我的应用程序:http://localhost/my-project.phar/public/index.php/some/route

并且可以通过以下方式访问静态资源:http://localhost/my-project.phar/public/resource/app.css

我确实遇到的一件事是使用“compression='gzip'”,它会向浏览器提供压缩版本,但浏览器无法弄清楚如何解压缩它。我关闭了压缩,而不是过多地使用它。希望有帮助

关于PHP:从html引用phar存档内的静态文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39679986/

相关文章:

python - 处理两个大文件的高效 Python 方法?

c - 使用 UUID 的唯一文件名

php - 计算在代码中打开的文件大小的最快方法 (PHP)

php - 如何在数据库和 Cookie 中存储密码 (PHP/MySQL)

php - 将用户重定向到登录表单

html - 滚动条 CSS 仅到表格

html - 当页面由绝对定位组成时将页脚置于底部

php - 错误1054 mysql语法错误未知列

javascript - 多个文件作为电子邮件附件上传

javascript - HTML Javascript 使用 slider 栏步骤更改图像