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

时间:2016-09-24 19:08:40

标签: php html file static phar

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

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

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

那么如果我将它导入到phar文件中,我如何才能获得我的图像,样式和js?我想把css /,js /和images /文件夹放在这个phar中而不会过多地更改当前代码,当html页面需要一个图像(如<img src="IMAGE-LOCATION-I-DONT-KNOW">)时,它会从文件中获取它在我的phar文件中。

1 个答案:

答案 0 :(得分: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的resources文件夹JS。

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

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

我肯定会遇到的一件事就是“压缩='gzip'”,它会向浏览器提供压缩版本,但浏览器无法弄清楚如何解压缩它。我关掉压缩而不是玩太多。希望有所帮助