Как редактировать phar файл

.phar — исполняемые PHP-архивы

Требования

Для того, чтобы работать с архивами PHAR Вам нужен PHP не ниже версии 5.2 с расширениями PHAR, zlib и bzip2 (если у Вас PHP 5.3, то PHAR уже установлен по умолчанию ).
Безопасность
По умолчанию, к PHAR архивам есть только доступ на чтение. При желании, можно установить phar.readonly = 0 в php.ini.
Кроме того, PHAR архивы могут исполняться только PHP интерпретатором

Пример

Создаем архив с текстовым файлом:

А теперь считываем его содержимое:

Файл-заглушка

“Заглушка” — это файл, который читается первым при подключении PHAR-архива, это своего рода Bootstrap. Этот файл интерпретируется только в том случае, если архив подключен полностью. Если же скрипт использует только конкретные файлы из архива — файл-заглушка не интерпретируется.
Посмотрим пример:

При создании файла-заглушки используйте вызов __HALT_COMPILER() в конце файла.
Доступ к файлу-заглушке можно получить вызовом метода getStub(), как в примере:

Для установки файла-заглушки по умолчанию нужно использовать метод setDefaultStub():

Создание содержимого архива

ВАЖНО: установите phar.readonly = 0 в php.ini

Чтение из архива

Сигнатура PHAR архива

ZIP и TAR

PHAR поддерживает чтение ZIP и TAR архивов. При этом чтение происходит так будто это обычный PHAR архив. Однако, следует помнить о том, что длина названия не должна превышать 255 байт, включая путь к файлу, а также, что для того, чтобы архив был исполняемым, он должен содержать в своем названии ‘.phar’ (например, habr.phar.gz)
Сжатие архивов производится одним из двух алгоритмов: gzip или bzip2.
Обратите внимание, что ZIP и TAR архивы могут быть созданы даже если phar.readonly = 1 в php.ini, но в таком случае не могут содержать файл-заглушку или ‘.phar’ в названии.
Конвертация форматов архива
Конвертацию архива можно проделать двумя способами:

Сжатие

Как я уже написал выше — доступно два способа сжатия: Gzip и Bzip2, при этом сжимать можно как сам архив, так и файлы внутри него.
Для сжатия архива нужно использовать метод compress(), который принимает два параметра — тип сжатия и расширение файла:

Для сжатия файлов — compressFiles() с одним параметром — тип сжатия:

Производительность

При использовании APC производительность PHAR вырастает до 6 раз.
Без кеширования — почти не отличается от варианта без использования PHAR.

Источник

Как редактировать phar файл

Here is an apache2 htaccess example that prevents the downloading of phar-Archives by the user:

If you get blank pages when trying to access a phar web-page, then you probably have Suhosin on your PHP (like in Debian and Ubuntu), and you need to ad this to your php.ini to allow execution of PHAR archives :

Users should set the `sys_temp_dir` directive.

PHAR stores temporary files in either `sys_temp_dir` or the current working directory(CWD).

This is especially important if you’re CWD is on a remote file system. Often web server clusters will share a common file system between each web server (using NFS, DFS, etc. ). In such scenarios, if you don’t set `sys_temp_dir` to a local directory, PHAR will be creating temporary files over the network, which will result in performance and functionality problems.

Here is a very simple program for creating phar files with CLI. Note that it requires phar.readonly in php.ini set to false (Off).

= «default» ;
$dir = «./» ;
$regex = «/^(. *build\\.php)(. *)$/» ;
$main = «main.php» ;
$shebang = «#!/usr/bin/env php» ;
$chmod = true ;

when read via phar://, stream will unserialize object including phar file

Here is a very simple class to build a phar file from a given source directory. You can use this for your own project and simple deployment.

But my main goal was to show how to use PHAR functions in a simple way.

Источник

Расширение файла PHAR

PHP Archive

Что такое файл PHAR?

Программы, которые поддерживают PHAR расширение файла

Ниже вы найдете указатель программ, которые можно использовать для открытия файлов PHAR, разделенных на категории 3 в соответствии с поддерживаемой системной платформой. Файлы с расширением PHAR, как и любые другие форматы файлов, можно найти в любой операционной системе. Указанные файлы могут быть переданы на другие устройства, будь то мобильные или стационарные, но не все системы могут быть способны правильно обрабатывать такие файлы.

Программы, обслуживающие файл PHAR

Как открыть файл PHAR?

Отсутствие возможности открывать файлы с расширением PHAR может иметь различное происхождение. К счастью, наиболее распространенные проблемы с файлами PHAR могут быть решены без глубоких знаний в области ИТ, а главное, за считанные минуты. Приведенный ниже список проведет вас через процесс решения возникшей проблемы.

Шаг 1. Получить PHP

Как редактировать phar файл. Смотреть фото Как редактировать phar файл. Смотреть картинку Как редактировать phar файл. Картинка про Как редактировать phar файл. Фото Как редактировать phar файлПроблемы с открытием и работой с файлами PHAR, скорее всего, связаны с отсутствием надлежащего программного обеспечения, совместимого с файлами PHAR на вашем компьютере. Этот легкий. Выберите PHP или одну из рекомендованных программ (например, Phar) и загрузите ее из соответствующего источника и установите в своей системе. Полный список программ, сгруппированных по операционным системам, можно найти выше. Одним из наиболее безопасных способов загрузки программного обеспечения является использование ссылок официальных дистрибьюторов. Посетите сайт PHP и загрузите установщик.

Шаг 2. Обновите PHP до последней версии

Как редактировать phar файл. Смотреть фото Как редактировать phar файл. Смотреть картинку Как редактировать phar файл. Картинка про Как редактировать phar файл. Фото Как редактировать phar файлЕсли у вас уже установлен PHP в ваших системах и файлы PHAR по-прежнему не открываются должным образом, проверьте, установлена ли у вас последняя версия программного обеспечения. Иногда разработчики программного обеспечения вводят новые форматы вместо уже поддерживаемых вместе с новыми версиями своих приложений. Если у вас установлена более старая версия PHP, она может не поддерживать формат PHAR. Все форматы файлов, которые прекрасно обрабатывались предыдущими версиями данной программы, также должны быть открыты с помощью PHP.

Шаг 3. Свяжите файлы PHP Archive с PHP

Если у вас установлена последняя версия PHP и проблема сохраняется, выберите ее в качестве программы по умолчанию, которая будет использоваться для управления PHAR на вашем устройстве. Следующий шаг не должен создавать проблем. Процедура проста и в значительной степени не зависит от системы

Как редактировать phar файл. Смотреть фото Как редактировать phar файл. Смотреть картинку Как редактировать phar файл. Картинка про Как редактировать phar файл. Фото Как редактировать phar файл

Изменить приложение по умолчанию в Windows

Изменить приложение по умолчанию в Mac OS

Шаг 4. Убедитесь, что PHAR не неисправен

Вы внимательно следили за шагами, перечисленными в пунктах 1-3, но проблема все еще присутствует? Вы должны проверить, является ли файл правильным PHAR файлом. Проблемы с открытием файла могут возникнуть по разным причинам.

Как редактировать phar файл. Смотреть фото Как редактировать phar файл. Смотреть картинку Как редактировать phar файл. Картинка про Как редактировать phar файл. Фото Как редактировать phar файл

1. Проверьте PHAR файл на наличие вирусов или вредоносных программ.

Если файл заражен, вредоносная программа, находящаяся в файле PHAR, препятствует попыткам открыть его. Рекомендуется как можно скорее сканировать систему на наличие вирусов и вредоносных программ или использовать онлайн-антивирусный сканер. Если файл PHAR действительно заражен, следуйте инструкциям ниже.

2. Убедитесь, что файл с расширением PHAR завершен и не содержит ошибок

Если вы получили проблемный файл PHAR от третьего лица, попросите его предоставить вам еще одну копию. Возможно, что файл не был должным образом скопирован в хранилище данных и является неполным и поэтому не может быть открыт. Это может произойти, если процесс загрузки файла с расширением PHAR был прерван и данные файла повреждены. Загрузите файл снова из того же источника.

3. Проверьте, есть ли у вашей учетной записи административные права

Иногда для доступа к файлам пользователю необходимы права администратора. Переключитесь на учетную запись с необходимыми привилегиями и попробуйте снова открыть файл PHP Archive.

4. Убедитесь, что в системе достаточно ресурсов для запуска PHP

Если система перегружена, она может не справиться с программой, которую вы используете для открытия файлов с расширением PHAR. В этом случае закройте другие приложения.

5. Убедитесь, что ваша операционная система и драйверы обновлены

Регулярно обновляемая система, драйверы и программы обеспечивают безопасность вашего компьютера. Это также может предотвратить проблемы с файлами PHP Archive. Возможно, файлы PHAR работают правильно с обновленным программным обеспечением, которое устраняет некоторые системные ошибки.

Вы хотите помочь?

Если у Вас есть дополнительная информация о расширение файла PHAR мы будем признательны, если Вы поделитесь ею с пользователями нашего сайта. Воспользуйтесь формуляром, находящимся здесь и отправьте нам свою информацию о файле PHAR.

Источник

Токарчук Андрей

Мне 34 года. Профессионально занимаюсь PHP-программированием. В работе использую PHP, JS, Symfony, Doctrine и многое другое. А вообще мне нравится всё новое и интересное 🙂

PHAR — упаковка PHP-приложений

В ближайшее время должна быть выпущена версия PHP V5.3. Cерия статей Что нового в PHP V5.3» посвящена новым замечательным функциям, появившимся в этой версии. В части 1 рассматриваются изменения в версии PHP V5.3, относящиеся к объектно-ориентированному программированию и управлению объектами, в части 2 — лямбда-функции и замыкания, а в части 3 мы говорили о пространстве имен, одной из самых долгожданных и обсуждаемых особенностей этой версии РНР. Здесь, в части 4, мы рассмотрим формат архивов Phar, который можно использовать внутри РНР. Он применяется не только для архивирования файлов, но и для распространения и исполнения целого приложения РНР, упакованного в один файл. Его можно использовать с РНР как расширение репозитория PECL, но в будущей версии V5.3 этот формат становится официальным расширением РНР.

Идея архивов Phar заимствована из технологии Java™ с ее архивами JAR, которые позволяют упаковать приложение в один файл, где есть все необходимое для работы этого приложения. Она отличается от концепции единственного исполняемого файла, который обычно создается такими языками программирования, как С, так как это не скомпилированное приложение, а просто архив. Так что файл JAR на самом деле содержит файлы, составляющие приложение, хотя по причинам безопасности они могут быть скрыты. Расширение Phar основано на аналогичной концепции, но больше ориентировано на веб-среду РНР. Кроме того, в отличие от JAR, архивы Phar могут обрабатываться самим РНР и не требуют внешнего инструмента для своего создания или использования.

Расширение Phar не является чем-то новым для РНР. Оно изначально было написано в РНР и известно как PHP_Archive, а в 2005 году было добавлено в репозиторий PEAR. Однако «чистое» РНР-решение этой задачи в реальной жизни работает довольно медленно, поэтому в 2007 году его переписали на С. В то же время была добавлена поддержка использования объекта SPL ArrayAccess для итерационной обработки архивов Phar. С тех пор была проведена определенная работа по повышению быстродействия архивов Phar.

Создание Phar

Для создания файла Phar нужно выполнить несколько шагов. Все они требуют исполнения команд РНР в той или иной форме, так как самостоятельных инструментов для создания таких архивов не существует. Кроме того, чтобы создать и модифицировать файлы Phar, нужно установить в 0 параметр php.ini phar.readonly. Для открытия или вызова файлов внутри архива Phar в РНР этого не требуется.

По умолчанию созданный архив Phar будет использовать собственный формат архива Phar. Но можно использовать и формат ZIP или TAR, преобразовав файл Phar в этот формат. В листинге 2 показано изменение формата на ZIP.
Листинг 2. Изменение формата хранения на ZIP

Изменение формата архива имеет свои преимущества и недостатки. Главное преимущество заключается в том, что содержимое архива можно просматривать при помощи любого инструмента для работы с файлами ZIP или TAR. Однако при использовании архива Phar в форматах ZIP или TAR требуется расширение Phar, а при использовании архива Phar в собственном формате Phar можно обойтись без его загрузки.

Теперь нужно определить загрузчик файла, то есть первый код, вызываемый при загрузке файла Phar.

Загрузчик файла Phar

Обращение к методу Phar::mapPhar() инициализирует архив Phar путем считывания manifest-файла. Это нужно сделать до ссылки на внутренние файлы архива посредством оболочки (stream wrapper) phar://. Первым будет загружаться тот файл, который данное приложение обычно загружает первым; в данном случае: index.php.

Второй необязательный аргумент метода Phar::createDefaultStub() позволяет включить другой файл, если Phar загружается из веб-сервера. Это удобно, когда приложение должно работать и в командной строке, и в контексте веб-браузера.

В реализациях на базе ZIP и TAR содержимое загрузчика хранится в файле.phar/stub.php, и команда setStub() не используется.

Добавление файлов в архив

Чтобы сжать файл или динамически использовать архив со сжатым файлом, нужно, чтобы при установке PHP было разрешено расширение bzip2 или zlib (для файлов, сжимаемых посредством gz).

Итак, мы создали архив Phar, который можно применять в любом приложении РНР. Теперь посмотрим, как использовать этот архив.

Работа с архивами Phar

Достоинство архивов Phar состоит в том, что их можно легко интегрировать в приложение, особенно при использовании собственного формата архива на базе Phar. В этом случае даже не нужно устанавливать расширение Phar, так как РНР сам умеет загружать такие файлы и извлекать их содержимое. Для загрузки ZIP- и TAR-архивов требуется расширение Phar.

Архивы Phar можно включать в приложение как любой другой файл РНР, что делает их использование предельно простым для разработчиков, которые уже знают, как включить в приложение чужой код. Продемонстрируем, как легко интегрировать Phar в приложениt

Интеграция кода из архива Phar в приложение

Простейший способ интегрировать код из архива Phar – просто включить в него этот архив, а затем ввести в архив файл, который нужно использовать. Для доступа к файлу внутри загруженного архива Phar можно использовать stream-оболочку phar:// (листинг 10).
Листинг 10. Загрузка кода из архива Phar

Первый оператор include загружает архив myphar.phar, включая код, указанный в загрузчике файла. Второй с помощью stream-оболочки открывает архив Phar и включает в архив только указанный файл. Заметим, что, как видно из листинга 10, для включения файла, находящегося в архиве, не обязательно применять include к самому архиву Phar.

Исполнение РНР-приложения из архива Phar

Одна из замечательных возможностей архивов Phar — это упаковка в архив Phar целого приложения и его распространение в таком виде. Преимущество этого подхода заключается в том, что он облегчает развертывание приложений, причем без ущерба для производительности — благодаря нескольким усовершенствованиям, внесенным в PHP V5.3. Однако при проектировании приложения для работы внутри Phar нужно учитывать несколько моментов:

Одно из популярных РНР-приложений, упакованных в Phar для иллюстрации того, как легко работать с архивами Phar, — PHPMyAdmin (см. Ресурсы). Оно целиком разработано для исполнения из файла архива Phar, однако позволяет хранить свой файл конфигурации вне архива Phar.

Заключение

Архивы Phar — весьма полезное дополнение к PHP V5.3. Они позволяют упаковать код РНР, что удобно для распространения приложений или библиотек в одном файле. Архив Phar можно легко загрузить из файла РНР при помощи функции require или include, либо выполнить прямо из браузера или командной строки, указав имя архива Phar.

Спасибо!

Источник

Введение

Phar реализует эту функциональность через потоки. Обычно, чтобы использовать в PHP-скрипте внешний файл, вы бы воспользовались, например, include :

Пример #1 Использование внешнего файла

Пример #2 Использование файла внутри phar-архива

Другими словами, даже если модуль phar отключён, phar-архив всё равно может быть выполнен или подключён. Доступ к отдельным файлам в архиве возможен только с модулем phar, если только архив не был создан с помощью PHP_Archive.

Модуль phar также способно конвертировать phar-архив из tar в zip или в phar-формат одной командой:

Пример #3 Конвертирование phar-архива из формата phar в формат tar

Phar может сжимать отдельные файлы или архив целиком с использованием gzip-компрессии или bzip2-компрессии, а также автоматически проверять целостность архива, используя сигнатуры MD5, SHA-1, SHA-256 или SHA-512.

Если вы создаёте приложение с целью распространения, вы, возможно, захотите прочитать раздел Как создавать Phar-архивы. Если вам нужно больше информации об отличиях между тремя поддерживаемыми phar форматами файлов, вам следует прочитать раздел Phar, Tar и Zip.

Если вы используете phar-приложение, то полезные советы находятся в разделе Как использовать phar-архивы.

Реализация Phar-архивов основана на PEAR-пакете » PHP_Archive, и детали реализации схожи, хотя модуль Phar гораздо мощнее. Кроме того, модуль Phar позволяет большинству PHP-приложений запускаться без изменений, тогда как phar-архивы, основанные на PHP_Archive, часто требуют существенных изменений для работы.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *