EC-CUBE3で開発しているとき、新規Entityを作成し別のEntity(Customer)のyamlから参照しようとするとのMappingExceptionが起こってしまいました。
MappingException in MappingException.php line 740:
原因が分かったのは1時間後。class_exists(“Entityのクラス名”)がfalseを返している・・・。
ルートにあるautoload.php内をのぞいてみるとこんな記述が。
// autoloader cache if (extension_loaded('apc') && ini_get('apc.enabled')) { $apcLoader = new Symfony\Component\ClassLoader\ApcClassLoader(sha1(__FILE__), $loader); $apcLoader->register(); $loader->unregister(); } elseif (extension_loaded('wincache') && ini_get('wincache.fcenabled')) { $winCacheLoader = new Symfony\Component\ClassLoader\WinCacheClassLoader(sha1(__FILE__), $loader); $winCacheLoader->register(); $loader->unregister(); }
つまりオートローダーごとapcのキャッシュに捕まっていたわけですね。
この部分を対処して解決しました。
このあたりのコード変更したら毎回apcのキャッシュクリアしたほうがいいのでしょうか?