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


How do freshen a phar cached with the phar.cache_list directive?

我将phar添加到php.ini的cache_list指令中,缓存工作得很好。几天后,我更新了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

如果我注释掉cache_list指令,phar工作并加载良好,但现在我不能再缓存它。这让我认为PHP正在查看旧文件的crc32

我已经尝试重新启动apache,我不知道如何"刷新"缓存,或者如果这甚至是问题。

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

  • 其中一个路径是错误的,导致整个列表失败。
  • 你正在缓存的一个页面没有元数据,导致它失败。
对于第二个问题,一个好的测试是添加一段垃圾元数据(也就是说,如果您还没有使用元数据)。phar:: setMetadata& # 40; & # 41;

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

如果对你正在运行的代码没有一个很好的视图,或者什么被改变了,我真的不能提供任何进一步的建议。