From 752295b83ac337c176be1b681974dc7bcde0bb65 Mon Sep 17 00:00:00 2001 From: Babak Alizadeh Date: Wed, 2 Jul 2025 15:11:46 +0000 Subject: [PATCH] bug fix in database backups file create --- .../src/Controller/System/DatabaseController.php | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/hesabixCore/src/Controller/System/DatabaseController.php b/hesabixCore/src/Controller/System/DatabaseController.php index 05d565c..5395695 100644 --- a/hesabixCore/src/Controller/System/DatabaseController.php +++ b/hesabixCore/src/Controller/System/DatabaseController.php @@ -19,7 +19,7 @@ final class DatabaseController extends AbstractController { $this->registryMGR = $registryMGR; $this->entityManager = $entityManager; - $this->backupPath = dirname(__DIR__, 2) . '/hesabixBackup/versions'; + $this->backupPath = dirname(__DIR__, 4) . '/hesabixBackup/versions'; } #[Route('/api/admin/database/backup/info', name: 'app_admin_database_backup_info', methods: ['GET'])] @@ -53,6 +53,11 @@ final class DatabaseController extends AbstractController $filename = 'Hesabix-' . time() . '.sql'; $filepath = $this->backupPath . '/' . $filename; + // بررسی دسترسی پوشه مقصد + if (!is_writable($this->backupPath)) { + throw new \Exception('پوشه مقصد قابل نوشتن نیست: ' . $this->backupPath); + } + // دریافت تنظیمات دیتابیس از EntityManager $connection = $this->entityManager->getConnection(); $params = $connection->getParams(); @@ -65,7 +70,7 @@ final class DatabaseController extends AbstractController // دستور mysqldump $command = sprintf( - 'mysqldump -h %s -P %s -u %s -p%s %s > %s', + 'mysqldump -h %s -P %s -u %s -p%s %s > %s 2>&1', escapeshellarg($dbHost), escapeshellarg($dbPort), escapeshellarg($dbUser), @@ -86,12 +91,12 @@ final class DatabaseController extends AbstractController return $this->json([ 'result' => 1, - 'filename' => $filename, + 'filename' => $filepath, 'message' => 'پشتیبان با موفقیت ایجاد شد' ]); } catch (\Exception $e) { - return $this->json([ - 'result' => 0, + return $this->json([ + 'result' => 0, 'message' => 'خطا در ایجاد پشتیبان: ' . $e->getMessage() ], 500); }