月: 2016年3月

Thunderbird受信したメールの一部で文字化けが発生した場合の対処

同僚のThunderbirdで受信したメールの一部で文字化けが発生した。

もう少し具体的に症状を書くと、
・新しく受信したメールは正常にみれる
・受信一覧で添付ファイル付きメールを選択すると添付アイコンが消える
・以前受信したメールで受信一覧からクリックしてメールを開くと件名が空になり本文が文字化けしている
・そもそも一覧の件名が合っているかちょっと不明
・文字化けしているがどうも本文中にメールヘッダがちぎれて表示されているような感じ
・メールのソースを見てみるとFromから始まっていない状態

Thunderbirdを最新版(38.7.0)にしたとかNortonでセキュリティスキャンしてたとか
色々な状況が重なってたようですが、調べてみるとこれは要約ファイルが破損したことが
原因っぽいので対応してみる。

※事前にアドオンの無効化とか一通り試しています。
※以下の方法は自己責任でお願いします。

まずメッセージの保存先を調べるために
「ツール」⇒「アカウント設定」⇒「サーバ設定」⇒「メッセージの保存先」のパスをコピーする。

次にThunderbirdを終了させる。

終了させたらメッセージの保存先フォルダに移動して、フォルダ内にある末尾が「~.msf」の
ファイルをすべて適当なフォルダにバックアップをとって削除する。
「Inbox.sbd」内にも「.msf」ファイルがあるので全てバックアップをとってから削除する。
いっぱいあるかもしれないけど、どの要約ファイルが壊れているのかわからないので
「~.msf」はとりあえず全部削除する。
「~.msf」で無いファイルは本データらしいので消さないように注意!

削除が終わったらThunderbirdを起動する。

これで同僚のThunderbirdは直りました。

基本からしっかり学ぶSymfony2入門 9章メモ

基本からしっかり学ぶSymfony2入門をやっていて、
9章のフィクスチャの読み込み(p271)で以下のようなエラーが出てしまったので調べたメモ。

$ php app/console doctrine:fixtures:load
Careful, database will be purged. Do you want to continue y/N ?y
  > purging database


  [Symfony\Component\Debug\Exception\FatalThrowableError]                                        
  Fatal error: Call to undefined method Doctrine\ORM\Internal\CommitOrderCalculator::addClass()  


doctrine:fixtures:load [--fixtures [FIXTURES]] [--append] [--em EM] [--shard SHARD] [--purge-with-truncate] [--multiple-transactions]

すると以下のページが見つかった。
This should resolve changes made in the latest release of doctrine2 #212

lib/Doctrine/ORM/Internal/CommitOrderCalculator.php
が変わってしまっていてエラーが出るように・・・。

ここの修正をとりあえずあててみた。
https://github.com/macnibblet/data-fixtures/commit/e92a836acda145867d4fd5138d27e6d991e74954
lib/Doctrine/Common/DataFixtures/Purger/ORMPurger.php

$ php app/console doctrine:fixtures:load
Careful, database will be purged. Do you want to continue y/N ?y
  > purging database
  > loading AppBundle\DataFixtures\ORM\LoadInquiryData
  > loading AppBundle\DataFixtures\ORM\LoadConcertData
  > loading AppBundle\DataFixtures\ORM\BlogArticleLoader

一応動いた。

こっちも試してみた。

DoctrineFixturesBundle/composer.json

$ composer remove doctrine/doctrine-fixtures-bundle 
$ composer require doctrine/data-fixtures '~1.0'
$ php app/console doctrine:fixtures:load
Careful, database will be purged. Do you want to continue y/N ?y
  > purging database
  > loading AppBundle\DataFixtures\ORM\LoadInquiryData
  > loading AppBundle\DataFixtures\ORM\LoadConcertData
  > loading AppBundle\DataFixtures\ORM\BlogArticleLoader