運(yùn)行時(shí)配置

這些函數(shù)的行為受 php.ini 中的設(shè)置影響。

文件系統(tǒng)和 stream 配置選項(xiàng)
名字 默認(rèn) 可修改范圍 更新日志
phar.readonly "1" PHP_INI_ALL  
phar.require_hash "1" PHP_INI_ALL  
phar.cache_list "" PHP_INI_SYSTEM  

這是配置指令的簡(jiǎn)短說(shuō)明。

phar.readonly bool

在使用 phar 流或 Phar 對(duì)象的寫(xiě)入操作時(shí), 本選項(xiàng)可以禁止創(chuàng)建、修改 Phar 歸檔。 在生產(chǎn)環(huán)境中推薦始終啟用本設(shè)置,否則伴隨其他常見(jiàn)安全漏洞, phar 擴(kuò)展支持寫(xiě)入時(shí)也能創(chuàng)建基于 PHP 的病毒。

注意:

出于安全考慮,只能在 php.ini 中取消此設(shè)置。 若在 php.ini 中禁用 phar.readonly,可以在代碼中啟用 phar.readonly 或其后禁用它。 若在 php.ini 中啟用 phar.readonly,在代碼中只能 "重復(fù)啟用" INI 變量,不能禁用。

phar.require_hash bool

此選項(xiàng)要求調(diào)用的所有 Phar 歸檔必須包含簽名(目前支持的簽名類(lèi)型有 MD5、SHA1、SHA256、SHA512、OpenSSL), 而且會(huì)拒絕處理不含簽名的 Phar 歸檔。

注意:

只能在 php.ini 中取消此設(shè)置。 若在 php.ini 中禁用 phar.require_hash,可以在代碼中啟用 phar.require_hash 或其后禁用它。 若在 php.ini 中啟用 phar.require_hash,在代碼中可以 "重復(fù)啟用" INI 變量,但不能禁用它。

此選項(xiàng)不影響 PharData 類(lèi)讀取普通 tar 文件。

警告

phar.require_hash 本身不提供任何安全保障,它只能阻止運(yùn)行因意外而損壞的 Phar 歸檔, 因?yàn)槿魏稳硕伎梢源鄹?Phar 歸檔后輕松修改成對(duì)應(yīng)的簽名。

phar.cache_list string

允許 web 服務(wù)啟動(dòng)時(shí)預(yù)先解析映射 phar 歸檔,提供性能上的優(yōu)化, 使得從 phar 歸檔中運(yùn)行文件的速度幾乎接近從傳統(tǒng)的基于磁盤(pán)安裝運(yùn)行這些文件的速度。

示例 #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