我尝试在我的应用程序中使用phar,但对我来说有点问题。早些时候我做了一个web项目,将我的类和包含html文件的php文件放在一个phar中,但是我无法将静态文件导入到phar并从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文件中,我如何才能获得我的图像,样式和js?我想把css /,js /和images /文件夹放在这个phar中而不会过多地更改当前代码,当html页面需要一个图像(如<img src="IMAGE-LOCATION-I-DONT-KNOW">
)时,它会从文件中获取它在我的phar文件中。
答案 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();
src
和vendor
包含类,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'”,它会向浏览器提供压缩版本,但浏览器无法弄清楚如何解压缩它。我关掉压缩而不是玩太多。希望有所帮助