在使用 php 5.2.13 和 pecl/phar 2.0.0 对 phar.cache_list 进行实验时,我发现了一些有趣之处。
似乎如果要缓存的 phar 列表中的任何 phar 在模块初始化期间无法正确读取,列表中的所有 phar 都不会被缓存,包括那些在失败之前已经成功读取的 phar。
此外,没有元数据的 phar 总是无法正确预缓存,原因似乎是 phar 模块中的一个错误,该错误如果元数据长度为 0,则会从下一个字节重新读取元数据长度。添加任何元数据都解决了我的问题。
因此,请确保您正在预缓存具有元数据的 phar,并确保您在列表中没有放置错误的路径/文件。