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

时间:2013-03-07 21:56:07

标签: php apache phar

我将我的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我不知道如何“刷新”缓存,或者这甚至是问题。

1 个答案:

答案 0 :(得分:0)

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

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

对第二个测试的一个好测试是添加一段垃圾元数据(即,如果你还没有使用元数据)。 phar::setMetadata()

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

如果没有很好地查看正在运行的代码或更改的内容,我无法提出任何进一步的建议。