【问题标题】:PHP: Referencing static files that is inside a phar archive from htmlPHP:从 html 引用 phar 存档中的静态文件
【发布时间】:2017-02-02 10:45:36
【问题描述】:

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

  • 创建了一个包含我的类和 html 代码的 phar 存档。我创建了两个存根,用于 cli.php 中的 cli 访问和操作,以及用于 web 访问,我编写了 index.php(此文件需要其他 php 文件并且显然回显了 html 代码)。

phing build.xml 的 phar 构建配置:

<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.
  • 东西的配置文件夹...你知道的:)
  • 图片、样式和内容的资产文件夹。
  • 添加一个包含 phar 存档的 index.php 文件。我无法直接运行 phar 存档。

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

【问题讨论】:

    标签: php html file static phar


    【解决方案1】:

    我不确定为什么您的设置不起作用,但我可以通过 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'”,它会向浏览器提供压缩版本,但浏览器不知道如何解压缩。我关闭了压缩而不是玩太多。希望有帮助

    【讨论】:

    • 谢谢!存根文件对我来说是个问题。我改变了它并且它起作用了。必须搜索有关 mungServer 的东西...祝您有美好的一天!
    猜你喜欢
    • 2011-10-10
    • 2011-06-30
    • 2012-10-11
    • 2013-02-20
    • 2012-09-10
    • 2017-01-04
    • 1970-01-01
    • 2015-08-28
    • 2023-04-01
    相关资源
    最近更新 更多