SunshinePHP Developer Conference 2015

Configuración en tiempo de ejecución

El comportamiento de estas funciones se ve afectado por la configuración de php.ini.

Opciones de Configuración de Flujos y Sistema de Ficheros
Nombre Por defecto Cambiable Historial de cambios
phar.readonly "1" PHP_INI_ALL  
phar.require_hash "1" PHP_INI_ALL  
phar.extract_list "" PHP_INI_ALL Disponible desde phar 1.1.0 a 1.2.3, eliminado en 2.0.0.
phar.cache_list "" PHP_INI_SYSTEM Disponible desde phar 2.0.0.

He aquí una breve explicación de las directivas de configuración.

phar.readonly boolean

Esta opción deshabilita la modificación o creación de archivos Phar usando el flujo phar o el soporte para escritura de objetos Phar. Este ajuste debería estar siempre activado en máquinas de producción, ya que el soporte para escritura conveniente de la extensión phar podría permitir la simple creación de un virus basado en PHP al asociarse con otras vulnerabilidades de seguridad comunes.

Nota:

Este ajuste sólo puede ser desactivado en php.ini por motivos de seguridad. Si phar.readonly está deshabilitado en php.ini, un usuario puede habilitar phar.readonly en un script o deshabilitarlo después. Si phar.readonly está habilitado en php.ini, un scrip puede "re-habilitar" inofensivamente la variable INI, pero no puede deshabilitarla.

phar.require_hash boolean

Esta opción forzará a todos los archivos Phar abiertos a que contengan algún tipo de signatura (actualmente está soportadas MD5, SHA1, SHA256 y SHA512), y rehusará procesar cualquer archivo Phar que no contenga una signatura.

Nota:

Este ajuste sólo puede ser desactivado en php.ini por motivos de seguridad. Si phar.require_hash está deshabilitado en php.ini, un usuario puede habilitar phar.require_hash en un script o deshabilitarlo después. Si phar.require_hash está habilitado en php.ini, un scrip puede "re-habilitar" inofensivamente la variable INI, pero no puede deshabilitarla.

Este ajuste no afecta a la lectura de ficheros tar planos con la clase PharData.

phar.extract_list string

Este ajuste INI ha sido eliminado desde phar 2.0.0

Permite el mapeo desde una ruta completa a un archivo phar o su alias hacia la ubicación de sus ficheros extraídos. El formato del parámetro es nombre=archivo,nombre2=archivo2. Esto permite la extracción de ficheros phar al disco, y permite a phar acutar como una especie de mapeador para extraer ficheros de discos. A menudo, esto se reailza por motivos de rendimiento, o para ayudar a la depuración de un phar.

Ejemplo #1 phar.extract_list usage example

in php.ini:
phar.extract_list = archivo=/ruta/completa/al/archivo/,archivo2=/ruta/completa/al/archivo2
<?php
include "phar://archivo/contenido.php";
include 
"phar://archivo2/foo.php";
?>

phar.cache_list string

Este ajuste INI fue añadido en 2.0.0

Permite mapear archivos phar para que sean preanalizados en el arranque del servidor web, proporcionando una mejora de rendimiento que saca ficheros en ejecución de un archivo phar casi tan rápido como si esos ficheros se ejecutaran desde una instalación tradicional basada en disco.

Ejemplo #2 Ejemplo de uso de phar.cache_list

en php.ini (windows):
phar.cache_list =C:\ruta\a\phar1.phar;C:\ruta\a\phar2.phar
en php.ini (unix):
phar.cache_list =/ruta/a/phar1.phar:/ruta/a/phar2.phar

add a note add a note

User Contributed Notes 1 note

up
0
milagre at gmail dot com
3 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