CakeFest 2024: The Official CakePHP Conference

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" INI_ALL  
phar.require_hash "1" INI_ALL  
phar.cache_list "" INI_SYSTEM  

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

phar.readonly bool

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 bool

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.

Precaución

phar.require_hash no proporciona ninguna seguridad per se, es simplemente una medida contra la ejecución accidental de archivos Phar corruptos, porque cualquiera que pueda alterar el Phar podría corregir fácilmente la firma.

phar.cache_list string

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 #1 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

User Contributed Notes 1 note

up
-13
milagre at gmail dot com
12 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