這些函數(shù)的行為受 php.ini 中的設(shè)置影響。
名字 | 默認(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