运行时配置

这些函数的行为受 php.ini 中的设置影响。

文件系统和流配置选项
名称 默认值 可更改 变更日志
phar.readonly "1" INI_ALL  
phar.require_hash "1" INI_ALL  
phar.cache_list "" INI_SYSTEM  

以下是配置指令的简短说明。

phar.readonly bool

此选项禁用使用 phar 流或 Phar 对象的写入支持来创建或修改 Phar 存档。此设置应始终在生产机器上启用,因为 phar 扩展的便捷写入支持可能允许在与其他常见安全漏洞结合使用时直接创建基于 php 的病毒。

注意:

由于安全原因,此设置只能在 php.ini 中取消设置。如果 phar.readonly 在 php.ini 中被禁用,用户可以在脚本中启用 phar.readonly 或稍后将其禁用。如果 phar.readonly 在 php.ini 中启用,脚本可以无害地“重新启用”INI 变量,但不能禁用它。

phar.require_hash bool

此选项将强制所有打开的 Phar 存档包含某种签名(目前支持 MD5、SHA1、SHA256、SHA512 和 OpenSSL),并且将拒绝处理任何不包含签名的 Phar 存档。

注意:

此设置只能在 php.ini 中取消设置。如果 phar.require_hash 在 php.ini 中被禁用,用户可以在脚本中启用 phar.require_hash 或稍后将其禁用。如果 phar.require_hash 在 php.ini 中启用,脚本可以无害地“重新启用”INI 变量,但不能禁用它。

此设置不影响使用 PharData 类读取纯 tar 文件。

警告

phar.require_hash 本身不提供任何安全保障,它只是针对运行意外损坏的 Phar 存档的一种措施,因为任何能够篡改 Phar 的人都可以轻松地随后修复签名。

phar.cache_list string

允许在 Web 服务器启动时预解析 Phar 存档的映射,从而提供性能改进,使运行来自 Phar 存档的文件的速度非常接近于从传统基于磁盘的安装中运行这些文件的速度。

示例 #1 phar.cache_list 使用示例

in php.ini (windows):
phar.cache_list =C:\path\to\phar1.phar;C:\path\to\phar2.phar
in php.ini (unix):
phar.cache_list =/path/to/phar1.phar:/path/to/phar2.phar

添加笔记

用户贡献笔记 1 note

milagre at gmail dot com
13 年前
在使用 php 5.2.13 和 pecl/phar 2.0.0 对 phar.cache_list 进行实验时,我发现了一些有趣之处。

似乎如果要缓存的 phar 列表中的任何 phar 在模块初始化期间无法正确读取,列表中的所有 phar 都不会被缓存,包括那些在失败之前已经成功读取的 phar。

此外,没有元数据的 phar 总是无法正确预缓存,原因似乎是 phar 模块中的一个错误,该错误如果元数据长度为 0,则会从下一个字节重新读取元数据长度。添加任何元数据都解决了我的问题。

因此,请确保您正在预缓存具有元数据的 phar,并确保您在列表中没有放置错误的路径/文件。
To Top