Как редактировать phar файл
Практически каждый сталкивался с некоторыми проблемами при открытии неизвестных файлов при работе на компьютере. Это может быть очень сложно. Однако такие проблемы, не только с файлами PHAR, могут быть решены стандартным способом. Следуйте инструкциям ниже, и мы можем гарантировать, что ваша проблема с открытием PHAR будет решена!
PHAR расширение файла
- Тип файла PHP Archive
- Разработчик файлов Greg Beaver
- Категория файла Исполняемые файлы
- Рейтинг популярности файлов
Как открыть файл PHAR?
Если данная учетная запись пользователя не имеет необходимых разрешений для открытия файлов с расширением PHAR , весьма вероятно, что в системе пользователей не установлена программа, поддерживающая данные файлы. Ниже приведен список действий, которые пользователь должен выполнить для решения наиболее распространенных проблем.
Шаг 1. Загрузите и установите приложение, которое поддерживает PHAR файлы
После установки приложения система должна автоматически открывать PHAR файлы с данным приложением. Ниже приведен список соответствующих программ, а также операционных систем, для которых они доступны:
Программы, поддерживающие PHAR файлы
WindowsШаг 2. Убедитесь, что файлы PHAR связаны с соответствующим программным обеспечением
Возможно, что приложение, которое поддерживает файлы PHAR, не связано с такими файлами. В этом случае программа должна быть вручную связана с файлами PHAR (щелкните правой кнопкой мыши значок файла → Свойства → Вкладка «Общие» → В подменю «Открыть с помощью» и нажмите кнопку «Изменить». Система отобразит список предлагаемых программы, которые поддерживают PHAR файлы. Выберите приложение, установив флажок «Всегда использовать выбранное приложение для открытия файлов такого типа». Система сохранит эту информацию в своем реестре и будет использовать ее для открытия PHAR файлов с выбранной программой. ,
Изменение PHAR ассоциации файлов в реестре
Ассоциация файлов для файлов PHAR может быть отредактирована вручную путем редактирования соответствующей записи в системном реестре Windows. Тем не менее, это не рекомендуется, так как это может привести к ошибкам в реестре, если это не сделано должным образом, и может даже повредить систему.
Сегодня мы познакомимся с понятием phar архивов, и их использовании в PHP. Зачем они нужны? Если вы пишите PHP приложение, которое направлено на развитие, то вы обязательно столкнетесь с такой проблемой. У вас будут происходить накопления PHP файлов, которые некуда будет девать. Предположим, тысяча или несколько тысяч файлов, которые занимают место. К тому же такое количество файлов, очень сложно загружать на хостинг, по FTP. Выходом из данной ситуации, будет использование phar архивов.
Сегодня мы узнаем
Что такое Phar?
Доступ к исходным файлам архива осуществляется напрямую, без распаковки архива. Прямой доступ обеспечивает PHP Stream Wrapper. Другими словами с файлами архива работают функции поддерживаемые PHP Stream Wrapper.
Требования к PHP версии
Расширение phar, доступно с версии PHP 5.2. А с версии 5.3 – это неотъемлемая часть PHP. Для начала, советую вам проверить версию PHP. Если версия ниже, меняйте. Если версия PHP не ниже 5.2 – вам необходимо переустановить PHP ядро с Phar, Zlib и bzip2 расширениями. Если у вас версия 5.3 – все отлично, phar установлен по умолчанию.
Если хотите, можете настроить защиту для ваших phar архивов, и сделать их доступными, только для чтения. Для этого, нужно установить настройку в файле php.ini. Установите следующий параметр phar.readonly = 0.
Преимущества Phar в PHP
PHAR легко устанавливается, а если точнее — он входит в стандартную поставку PHP 5.3.
Удобно при копировании файлов на другой хост.
Легко разворачивать — всего один файл.
Высокая степень защиты PHP приложения — сигнатуры, OpenSSL.
Обладает высокой производительностью.
Работа с Phar в PHP
В этом разделе, мы будем работать с утилитой. А точнее, будем создавать и использовать собственные библиотеки файлов PHP приложения. Вы увидите, насколько просто и удобно использовать phar библиотеки.
Пример Hello World
Для начала создадим простой архив, с текстовым файлом:
А теперь, прочитаем его:
Создание и использование библиотек Phar
В этом разделе, мы научимся создавать собственные phar библиотеки и использовать их в нужных целях. Для начала напишем 2 класса, которые нам пригодятся:
classes/SampleClass.php
classes/SampleClass2.php
Очень просто, неправда ли? Теперь создадим в этой же папке файл, который будет подключать оба класса.
classes/index.php
Теперь создайте папку lib, которая будет использоваться для phar библиотек. И создадим главный PHP файл, который будет компилировать phar архивы, и будет демонстрировать работоспособность библиотек.
index.php
Результат выполнения нашего скрипта предоставлен на скриншоте ниже:
В начале, проверяем, существует ли наша библиотека (lib/SampleLibrary.phar). Если существует – нам не нужно компилировать ее снова. Если нет – мы автоматически компилируем и пакуем нашу библиотеку.
Для начала проверяем читаемость phar архива с помощью функции ini_set. Далее, указываем имя и будущее местонахождение архива, для phar конструктора. С помощью setDefaultStub, указываем главный файл в библиотеке, который будет подключать все классы библиотеки. С помощью функции buildFromDirectory, собственно произошло компилирование библиотеки. Функция compress сжала библиотеку в формат GZIP.
Обращение к библиотеке происходит с помощью phar://. Это синтаксис PHP stream wrapper.
Добавление файлов в библиотеку Phar
Добавить файл в библиотеку, можно с помощью разных функций:
Смотрите несколько примеров добавления файлов в архив:
Чтение phar архива
Как в случае с добавлением файлов, чтение phar архива, можно провести несколькими способами:
PHP stream wrapper (phar://)
Итерация по инстансу 'Phar'
Сжатие Phar архива
Сжатие phar архивов, можно провести с использованием двух функций compress() и compressFiles(). Функция compress(), принимает два параметра, это имя файла и тип сжатия. Функция compressFiles(), принимает только один параметр – тип сжатия.
Рассмотрим пример использования функции compress():
Также рассмотрим пример сжатия phar архива с помощью compressFiles():
Конвертация форматов архива
Мы уже рассматривали сжатие phar архивов, в разделе выше. В данном разделе рассмотрим конвертацию форматов архива. Конвертацию архива, можно сделать несколькими способами:
Phar::ConvertToData()
Принимает три параметра:
Формат - Phar::TAR, Phar::ZIP
Сжатие - Phar::NONE, Phar::GZ, Phar::BZ2
Расширение - .tar, .tar.bz2, .tar.gz, .zip
Другой вариант, используя функцию Phar::ConvertToExecutable(), которая принимает все тоже, что и предыдущая, за исключением последнего параметра (расширения).
Сигнатура (защита) phar архивов
Сигнатура phar библиотек, используется для защиты архивов. А если говорить точнее, для проверки достоверности данных. PHAR поддерживает несколько алгоритмов создания сигнатур:
При установки сигнатуры phar архива, используют метод Phar::setSignatureAlgorithm(), который принимает два параметра: тип сигнатуры, приватный ключ. Причем, типы сигнатуры в функции, указываются следующим образом:
Для большей ясности смотрите примеры установки сигнатуры на phar архив:
Чтение других архивов
Также phar поддерживает чтение других архивов: ZIP и TAR. Архивы читаются, так как и phar архивы. При этом, длинна названия архива не должна превышать 255 байт, включая путь файла, и то, что в своем названии он должен иметь слово .phar. Например: sitear.phar.gz.
Заключение
Использование phar в программировании на PHP, очень удобно и полезно. Это экономит ваше дисковое пространство, защищает код, улучшает производительность и многое другое при создании больших PHP приложений.
Если у вас есть предложения или вопросы по использованию Phar в PHP, выскажите их в комментариях!
Here is an apache2 htaccess example that prevents the downloading of phar-Archives by the user:
RewriteEngine on
RewriteRule ^(.*)\.phar$ - [F]
It triggers a "403 - Forbidden" message instead of delivering the archive.
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).
for ( $i = 0 ; $i < $argc ; $i ++) switch ( $argv [ $i ]) case "-o" :
$i ++;
if ( $i >= $argc ) echo "Missing output file name" . PHP_EOL ;
exit( 1 );
>
$filename = $argv [ $i ];
break;
case "-i" :
$i ++;
if ( $i >= $argc ) echo "Missing input directory name" . PHP_EOL ;
exit( 1 );
>
$dir = $argv [ $i ];
break;
case "-p" :
$i ++;
if ( $i >= $argc ) echo "Missing regular expression pattern" . PHP_EOL ;
exit( 1 );
>
$regex = $argv [ $i ];
break;
case "-m" :
$i ++;
if ( $i >= $argc ) echo "Missing main file" . PHP_EOL ;
exit( 1 );
>
$main = $argv [ $i ];
break;
case "-b" :
$i ++;
if ( $i >= $argc ) echo "Missing shebang of file" . PHP_EOL ;
exit( 1 );
>
$shebang = $argv [ $i ];
break;
case "--no-chmod" :
$chmod = false ;
break;
>
>
if ( file_exists ( $filename )) unlink ( $filename );
$phar = new Phar ( $filename );
$phar -> buildFromDirectory ( $dir , $regex );
$phar -> setStub (( $shebang ? $shebang . PHP_EOL : "" ) . $phar -> createDefaultStub ( $main ));
if ( $chmod ) chmod ( $filename , fileperms ( $phar ) | 0700 );
>
when read via phar://, stream will unserialize object including phar file
Use this to create phar
<?php
// create new Phar
$phar = new Phar ( 'lemon.phar' );
$phar -> startBuffering ();
$phar -> addFromString ( 'test.txt' , 'text' );
$phar -> setStub ( '<?php __HALT_COMPILER(); ? >' );
// add object of any class as meta data
class AnyClass <>
$object = new AnyClass ;
$object -> data = 'Chanh' ;
$phar -> setMetadata ( $object );
$phar -> stopBuffering ();
?>
and read it by:
<?php
class AnyClass function __destruct () echo $this -> data ;
>
>
// output: Chanh
file_get_contents ( 'phar://test.phar' );
?>
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.
class BuildPhar
private $_sourceDirectory = null ;
private $_stubFile = null ;
private $_outputDirectory = null ;
private $_pharFileName = null ;
/**
* @param $_sourceDirectory // This is the directory where your project is stored.
* @param $stubFile // Name the entry point for your phar file. This file have to be within the source
* directory.
* @param null $_outputDirectory // Directory where the phar file will be placed.
* @param string $pharFileName // Name of your final *.phar file.
*/
public function __construct ( $_sourceDirectory , $stubFile , $_outputDirectory = null , $pharFileName = 'myPhar.phar' )
if (( file_exists ( $_sourceDirectory ) === false ) || ( is_dir ( $_sourceDirectory ) === false )) throw new Exception ( 'No valid source directory given.' );
>
$this -> _sourceDirectory = $_sourceDirectory ;
if ( file_exists ( $this -> _sourceDirectory . '/' . $stubFile ) === false ) throw new Exception ( 'Your given stub file doesn\'t exists.' );
>
$this -> _stubFile = $stubFile ;
if(empty( $pharFileName ) === true ) throw new Exception ( 'Your given output name for your phar-file is empty.' );
>
$this -> _pharFileName = $pharFileName ;
if ((empty( $_outputDirectory ) === true ) || ( file_exists ( $_outputDirectory ) === false ) || ( is_dir ( $_outputDirectory ) === false ))
if ( $_outputDirectory !== null ) trigger_error ( 'Your output directory is invalid. We set the fallback to: "' . dirname ( __FILE__ ). '".' , E_USER_WARNING );
>
$this -> _outputDirectory = dirname ( __FILE__ );
> else $this -> _outputDirectory = $_outputDirectory ;
>
$this -> prepareBuildDirectory ();
$this -> buildPhar ();
>
private function prepareBuildDirectory () if ( preg_match ( '/.phar$/' , $this -> _pharFileName ) == FALSE ) $this -> _pharFileName .= '.phar' ;
>
if ( file_exists ( $this -> _pharFileName ) === true ) unlink ( $this -> _pharFileName );
>
>
private function buildPhar () $phar = new Phar ( $this -> _outputDirectory . '/' . $this -> _pharFileName );
$phar -> buildFromDirectory ( $this -> _sourceDirectory );
$phar -> setDefaultStub ( $this -> _stubFile );
>
>
//END Class
Программы, которые поддерживают PHAR расширение файла
Ниже вы найдете указатель программ, которые можно использовать для открытия файлов PHAR, разделенных на категории 3 в соответствии с поддерживаемой системной платформой. Файлы с расширением PHAR, как и любые другие форматы файлов, можно найти в любой операционной системе. Указанные файлы могут быть переданы на другие устройства, будь то мобильные или стационарные, но не все системы могут быть способны правильно обрабатывать такие файлы.
Программы, обслуживающие файл PHAR
Как открыть файл PHAR?
Отсутствие возможности открывать файлы с расширением PHAR может иметь различное происхождение. К счастью, наиболее распространенные проблемы с файлами PHAR могут быть решены без глубоких знаний в области ИТ, а главное, за считанные минуты. Приведенный ниже список проведет вас через процесс решения возникшей проблемы.
Шаг 1. Получить PHP
Проблемы с открытием и работой с файлами PHAR, скорее всего, связаны с отсутствием надлежащего программного обеспечения, совместимого с файлами PHAR на вашем компьютере. Этот легкий. Выберите PHP или одну из рекомендованных программ (например, Phar) и загрузите ее из соответствующего источника и установите в своей системе. Полный список программ, сгруппированных по операционным системам, можно найти выше. Одним из наиболее безопасных способов загрузки программного обеспечения является использование ссылок официальных дистрибьюторов. Посетите сайт PHP и загрузите установщик.
Шаг 2. Обновите PHP до последней версии
Если у вас уже установлен PHP в ваших системах и файлы PHAR по-прежнему не открываются должным образом, проверьте, установлена ли у вас последняя версия программного обеспечения. Иногда разработчики программного обеспечения вводят новые форматы вместо уже поддерживаемых вместе с новыми версиями своих приложений. Если у вас установлена более старая версия PHP, она может не поддерживать формат PHAR. Все форматы файлов, которые прекрасно обрабатывались предыдущими версиями данной программы, также должны быть открыты с помощью PHP.
Шаг 3. Свяжите файлы PHP Archive с PHP
Если у вас установлена последняя версия PHP и проблема сохраняется, выберите ее в качестве программы по умолчанию, которая будет использоваться для управления PHAR на вашем устройстве. Следующий шаг не должен создавать проблем. Процедура проста и в значительной степени не зависит от системы
Изменить приложение по умолчанию в Windows
- Щелкните правой кнопкой мыши на файле PHAR и выберите « Открыть с помощью опцией».
- Выберите Выбрать другое приложение → Еще приложения
- Последний шаг - выбрать опцию Найти другое приложение на этом. указать путь к папке, в которой установлен PHP. Теперь осталось только подтвердить свой выбор, выбрав Всегда использовать это приложение для открытия PHAR файлы и нажав ОК .
Изменить приложение по умолчанию в Mac OS
Шаг 4. Убедитесь, что PHAR не неисправен
Вы внимательно следили за шагами, перечисленными в пунктах 1-3, но проблема все еще присутствует? Вы должны проверить, является ли файл правильным PHAR файлом. Проблемы с открытием файла могут возникнуть по разным причинам.
1. Проверьте PHAR файл на наличие вирусов или вредоносных программ.
Если файл заражен, вредоносная программа, находящаяся в файле PHAR, препятствует попыткам открыть его. Рекомендуется как можно скорее сканировать систему на наличие вирусов и вредоносных программ или использовать онлайн-антивирусный сканер. Если файл PHAR действительно заражен, следуйте инструкциям ниже.
2. Убедитесь, что файл с расширением PHAR завершен и не содержит ошибок
Если вы получили проблемный файл PHAR от третьего лица, попросите его предоставить вам еще одну копию. Возможно, что файл не был должным образом скопирован в хранилище данных и является неполным и поэтому не может быть открыт. Это может произойти, если процесс загрузки файла с расширением PHAR был прерван и данные файла повреждены. Загрузите файл снова из того же источника.
3. Проверьте, есть ли у вашей учетной записи административные права
Иногда для доступа к файлам пользователю необходимы права администратора. Переключитесь на учетную запись с необходимыми привилегиями и попробуйте снова открыть файл PHP Archive.
4. Убедитесь, что в системе достаточно ресурсов для запуска PHP
5. Убедитесь, что ваша операционная система и драйверы обновлены
Регулярно обновляемая система, драйверы и программы обеспечивают безопасность вашего компьютера. Это также может предотвратить проблемы с файлами PHP Archive. Возможно, файлы PHAR работают правильно с обновленным программным обеспечением, которое устраняет некоторые системные ошибки.
Вы хотите помочь?
Если у Вас есть дополнительная информация о расширение файла PHAR мы будем признательны, если Вы поделитесь ею с пользователями нашего сайта. Воспользуйтесь формуляром, находящимся здесь и отправьте нам свою информацию о файле PHAR.
Читайте также: