PHP 7.4.0RC4 Released!

Настройка во время выполнения

Поведение этих функций зависит от установок в php.ini.

Параметры конфигурации файловой системы и потоков
Имя По умолчанию Место изменения Список изменений
phar.readonly "1" PHP_INI_ALL  
phar.require_hash "1" PHP_INI_ALL  
phar.extract_list "" PHP_INI_ALL Доступно с phar 1.1.0 и до 1.2.3, удалено в 2.0.0.
phar.cache_list "" PHP_INI_SYSTEM Доступно с phar 2.0.0.

Краткое разъяснение конфигурационных директив.

phar.readonly boolean

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

Замечание:

Этот параметр может быть отключен в php.ini только исходя из соображений безопасности. Если параметр phar.readonly отключен в php.ini, пользователь может включить phar.readonly в скрипте или отключить его позже. Если параметр phar.readonly включен в php.ini, скрипт может безвредно "повторно включить" переменную INI, но не может отключить ее.

phar.require_hash boolean

Этот параметр сделает обязательной какую-либо подпись (в настоящий момент поддерживаются MD5, SHA1, SHA256 и SHA512) для всех открываемых Phar-архивов и сделает невозможной обработку любого Phar-архива, не содержащего подпись.

Замечание:

Этот параметр может быть отключен в php.ini только из соображений безопасности. Если параметр phar.require_hash отключен в php.ini, пользователь может включить phar.require_hash в скрипте или отключить его позже. Если параметр phar.require_hash включен в php.ini, скрипт может безвредно "повторно включить" переменную INI, но не может отключить ее.

Этот параметр не влияет на чтение простых tar-файлов при помощи класса PharData.

phar.extract_list string

Этот параметр INI удалён с phar 2.0.0

Позволяет осуществлять разметку с полного пути к phar-архиву или его псевдониму к расположению его распакованных файлов. Формат параметраname=archive,name2=archive2. Такая разметка делает возможным извлечение файлов phar на диск, а также позволяет модулю phar выступать в роли своего рода разметчика по отношению к распакованным файлам. Часто это делается из соображений производительности или является вспомогательным средством при отладке phar.

Пример #1 phar.extract_list usage example

в php.ini:
phar.extract_list = archive=/полный/путь/к/архиву/,arch2=/полный/путь/к/архиву2
<?php
include "phar://archive/content.php";
include 
"phar://arch2/foo.php";
?>

phar.cache_list string

Этот параметр INI добавлен в phar 2.0.0

Позволяет проводить разметку phar-архивов, для которых необходимо осуществить предварительный разбор в момент старта веб-сервера. Обеспечивает повышение производительности за счёт запуска файлов вне phar-архива со скоростью, очень близкой к той, которая была бы при запуске этих файлов традиционным способом с диска.

Пример #2 phar.cache_list usage example

в php.ini (windows):
phar.cache_list =C:\путь\к\phar1.phar;C:\путь\к\phar2.phar
в php.ini (unix):
phar.cache_list =/путь/к/phar1.phar:/путь/к/phar2.phar

add a note add a note

User Contributed Notes 1 note

up
-6
milagre at gmail dot com
8 years ago
During experimentation with phar.cache_list using php 5.2.13 and pecl/phar 2.0.0, I found some interesting details.

It seems that if any phar in the list of phars to cache fails to be read properly during module initialization, none of the phars in the list will be cached, including ones that had already been successfully read before the failure.

Additionally, phars without metadata will always fail to be pre-cached properly due to what seems to be a bug in the phar module that re-reads the length of the metadata from the next byte if the metadata length is 0.  Adding any metadata resolved the problem for me.

So make sure you are pre-caching phars with metadata, and make sure you don't put a bad path/file in the list.
To Top