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のキャッシュクリアしたほうがいいのでしょうか?
EC-CUBEに関するお問い合わせ
[重要]現在公式にセキュリティサポートが切れていないPHPは8.1以上、MySQLは8.0以上で、対応しているEC-CUBEバージョンは4.2以上です。古いEC-CUBEを使っている方は適切なタイミングでバージョンアップをご検討ください。
EC-CUBEゴールドパートナー