2013-03-07 2 views
5

Я добавил свой phar в директиву cache_list в php.ini, и кеширование отлично работало. Через несколько дней я обновил Phar теперь я получаю следующее сообщение об ошибке:Как обновить phar, кэшированный с помощью директивы phar.cache_list?

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 директиву, в ФАР работы и нагрузки хорошо, но теперь я уже не может кэшировать. Это заставляет меня думать, что PHP смотрит на crc32 старого файла.

Я попытался перезапустить apache Я не знаю, как еще «освежить» кеш, или если это даже проблема.

+0

Вы пробовали с новым именем? – inf3rno

ответ

0

Я бы предложил удалить или переименовать старый файл app.phar. Система должна восстанавливать новую при следующей загрузке. Если возникает одна и та же ошибка, у вас есть одна из двух проблем:

  • Один из путей к фарам, которые вы кэшировали, является неправильным, в результате чего весь список выходит из строя.
  • Один из фаз, к которым вы клонируете, не имеет метаданных, что приводит к его сбою.

Хороший тест для второго - это добавление части метаданных нежелательной почты (то есть, если вы еще не используете метаданные). phar::setMetadata()

Как обычно, проверьте все ваши пути.

Без хорошего представления о коде, в котором вы работаете, или о том, что было изменено, я больше ничего не могу предложить.