2016-09-24 5 views
3

Я попытался использовать phar в своем приложении, но для меня есть небольшая проблема. Раньше я делал веб-проект, ставил свои классы и php-файлы, содержащие html-файлы, в phar, но я не мог импортировать статические файлы в phar и ссылался на них из тегов html. Я сделал это так:PHP: ссылки на статические файлы, находящиеся внутри phar-архива, из html

  • Создал архив phar, содержащий мои классы и html-коды. я создал два заглушки, для доступа cli и операций в cli.php, а для доступа в Интернет я написал index.php (для этого файла нужны другие php-файлы и, очевидно, эхо-коды html).

Фар сборки конф из 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. 
  • конфигурация сгиба er для вещей ... вы знаете :)
  • папка активов для изображений, стилей и прочее.
  • добавить файл index.php, который содержит фаер-архив. Я не смог запустить phar-архив напрямую.

Как я могу достичь своих изображений, стилей и js, если я импортирую его в файл phar? Я хочу поместить css /, js/и images/folders внутри этого phar и без слишком большого изменения текущего кода, когда html-страница нуждается в изображении (например, <img src="IMAGE-LOCATION-I-DONT-KNOW">), он доставит его из файла, который находится внутри моего 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(); 

src и vendor содержат классы и public содержит index.php (точку входа в приложение), а также resources папка с css и js.

После развертывания я могу получить доступ к приложению через: http://localhost/my-project.phar/public/index.php/some/route

И статические ресурсы могут быть доступны через: http://localhost/my-project.phar/public/resource/app.css

Одна вещь, которую я определенно боролся с имел «сжатия =„GZIP“», который будет доставить сжатую версию в браузер, но браузер не смог понять, как ее распаковать. Я отключил компрессию, а не слишком много играл с ней. Надеюсь, что поможет

+0

Спасибо! для меня была проблема с файлом-заглушкой. Я изменил его, и это сработало. Gotta поиск по этому материалу mungServer ... Хороший день! – Kambaa