codecamp

PHP8 Phar运行时配置

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

文件系统和 stream 配置选项
名字默认可修改范围更新日志
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 中取消此设置。 若在 php.ini 中禁用 phar.readonly,可以在代码中启用 phar.readonly 或其后禁用它。 若在 php.ini 中启用 phar.readonly,在代码中只能 "重复启用" INI 变量,不能禁用。

phar.require_hash bool

此选项要求调用的所有 Phar 归档必须包含签名(目前支持的签名类型有 MD5、SHA1、SHA256、SHA512、OpenSSL), 而且会拒绝处理不含签名的 Phar 归档。

注意:

只能在 php.ini 中取消此设置。 若在 php.ini 中禁用 phar.require_hash,可以在代码中启用 phar.require_hash 或其后禁用它。 若在 php.ini 中启用 phar.require_hash,在代码中可以 "重复启用" INI 变量,但不能禁用它。

此选项不影响 PharData 类读取普通 tar 文件。

警告

phar.require_hash 本身不提供任何安全保障,它只能阻止运行因意外而损坏的 Phar 归档, 因为任何人都可以篡改 Phar 归档后轻松修改成对应的签名。

phar.cache_list string

允许 web 服务启动时预先解析映射 phar 归档,提供性能上的优化, 使得从 phar 归档中运行文件的速度几乎接近从传统的基于磁盘安装运行这些文件的速度。

示例 #1 phar.cache_list 用法示例

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


PHP8 Phar安装
PHP8 Phar资源类型
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

PHP8 语言参考

PHP8 函数参考

PHP8 影响 PHP 行为的扩展

PHP8 Componere

PHP8 安装/配置

PHP8 外部函数接口

PHP8 选项和信息

PHP8 选项/信息 函数

PHP8 Windows Cache for PHP

PHP8 WinCache 函数

PHP8 Yac

PHP8 身份认证服务

PHP8 Radius 函数

PHP8 压缩与归档扩展

PHP8 Phar

PHP8 Zip

PHP8 ZipArchive 类

PHP8 加密扩展

PHP8 OpenSSL

PHP8 OpenSSL 函数

PHP8 Sodium 函数

PHP8 数据库扩展

PHP8 针对各数据库系统对应的扩展

PHP8 CUBRID 函数

PHP8 Firebird/InterBase

PHP8 Firebird/InterBase函数

PHP8 MongoDB介绍驱动程序体系结构和特殊功能

PHP8 MongoDB\Driver\Command 类

PHP8 MongoDB\Driver\Query 类

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }