外部からのアクセスの可能性は完全にゼロという前提ですと
(FTP・MySQL・サーバーのコントロールパネル・EC-CUBE管理画面のパスワードは念のため全て変更しておいたほうが良いような気もします)
ファーストサーバ以外のサーバーでそっくりそのまま同じサイトを設置して同様の現象が起こるかどうかなど、原因の切り分けが必要なように思います。
あとはインストールしているプラグインでバグがないかどうか。
サーバーのCronでおかしな定時処理が行われていないかどうか。
ログを取るなりデバッグが必要かと思います。
可能性があるとすれば「商品の削除」時でしょうか。
Admin/ProductController
ここならプラグインなどから全削除操作できるので。(バグでも悪意でも)
$deleteImagesの値をデバッグしてみると良いかもしれません。
public function delete(Application $app, Request $request, $id = null)
{
$this->isTokenValid($app);
$session = $request->getSession();
$page_no = intval($session->get('eccube.admin.product.search.page_no'));
$page_no = $page_no ? $page_no : Constant::ENABLED;
if (!is_null($id)) {
/* @var $Product \Eccube\Entity\Product */
$Product = $app['eccube.repository.product']->find($id);
if (!$Product) {
$app->deleteMessage();
return $app->redirect($app->url('admin_product_page', array('page_no' => $page_no)).'?resume='.Constant::ENABLED);
}
if ($Product instanceof \Eccube\Entity\Product) {
log_info('商品削除開始', array($id));
$Product->setDelFlg(Constant::ENABLED);
$ProductClasses = $Product->getProductClasses();
$deleteImages = array();
foreach ($ProductClasses as $ProductClass) {
$ProductClass->setDelFlg(Constant::ENABLED);
$Product->removeProductClass($ProductClass);
$ProductClasses = $Product->getProductClasses();
foreach ($ProductClasses as $ProductClass) {
$ProductClass->setDelFlg(Constant::ENABLED);
$Product->removeProductClass($ProductClass);
$ProductStock = $ProductClass->getProductStock();
$app['orm.em']->remove($ProductStock);
}
$ProductImages = $Product->getProductImage();
foreach ($ProductImages as $ProductImage) {
$Product->removeProductImage($ProductImage);
$deleteImages[] = $ProductImage->getFileName();
$app['orm.em']->remove($ProductImage);
}
$ProductCategories = $Product->getProductCategories();
foreach ($ProductCategories as $ProductCategory) {
$Product->removeProductCategory($ProductCategory);
$app['orm.em']->remove($ProductCategory);
}
}
$app['orm.em']->persist($Product);
$app['orm.em']->flush();
$event = new EventArgs(
array(
'Product' => $Product,
'ProductClass' => $ProductClasses,
'deleteImages' => $deleteImages,
),
$request
);
$app['eccube.event.dispatcher']->dispatch(EccubeEvents::ADMIN_PRODUCT_DELETE_COMPLETE, $event);
$deleteImages = $event->getArgument('deleteImages');
// 画像ファイルの削除(commit後に削除させる)
foreach ($deleteImages as $deleteImage) {
try {
$fs = new Filesystem();
$fs->remove($app['config']['image_save_realdir'] . '/' . $deleteImage);
} catch (\Exception $e) {
// エラーが発生しても無視する
}
}
log_info('商品削除完了', array($id));
$app->addSuccess('admin.delete.complete', 'admin');
} else {
log_info('商品削除エラー', array($id));
$app->addError('admin.delete.failed', 'admin');
}
} else {
log_info('商品削除エラー', array($id));
$app->addError('admin.delete.failed', 'admin');
}
return $app->redirect($app->url('admin_product_page', array('page_no' => $page_no)).'?resume='.Constant::ENABLED);
}
----------------
EC-CUBEカスタマイズ・高速化・脆弱性対策・SEO ご相談ください。
2系・3系から4系へのバージョンアップ実績豊富