如何刷新使用phar.cache_list指令缓存的phar?

fun*_*oid 5 php apache phar

我将我的phar添加到cache_list指令中,php.ini并且缓存工作得很好.几天后我更新了phar,现在我收到以下错误:

Warning: Phar::webPhar(phar:///usr/share/app/app.phar/www.php): failed to open
stream: phar error: internal corruption of phar "/usr/share/app/app.phar"
(crc32 mismatch on file "www.php") in /usr/share/app/app.phar on line 8
Run Code Online (Sandbox Code Playgroud)

如果我注释掉该cache_list指令,那么phar工作并加载正常,但现在我无法再缓存它.这让我觉得PHP正在查看crc32旧文件.

我试过重启apache我不知道如何"刷新"缓存或者甚至是问题.

小智 0

我建议删除或重命名旧的 app.phar 文件。系统应该在下一次加载时重新生成一个新的。如果出现相同的错误,则说明您遇到以下两个问题之一:

  • 您缓存的 phar 的路径之一是错误的,导致整个列表失败。
  • 您正在缓存的其中一个 phars 没有元数据,导致其失败。

第二个的一个很好的测试是添加一段垃圾元数据(也就是说,如果您尚未使用元数据)。phar::setMetadata()

像往常一样,检查所有路径。

如果没有很好地了解您运行的代码或更改的内容,我真的无法提出任何进一步的建议。