Створіть файл test.php у корені Magento 2, помістіть у нього код:
<?php error_reporting(E_ALL); ini_set('display_errors', 1); use Magento\Framework\App\Bootstrap; require __DIR__ . '/app/bootstrap.php'; define('SOURCE_MEDIA_URL', 'https://livestore.com/pub/media/'); //замініть це!!! $bootstrap = Bootstrap::create(BP, $_SERVER); $obj = $bootstrap->getObjectManager(); $state = $obj->get(Magento\Framework\App\State::class); $state->setAreaCode('frontend'); $object = $obj->get(\Magento\Catalog\Model\ResourceModel\Product\Action::class); $connection = $object->getConnection(); $mediaGallery = $connection->getTableName('catalog_product_entity_media_gallery'); $fileSystem = $obj->create(\Magento\Framework\Filesystem::class); $mediaPath = $fileSystem->getDirectoryRead(\Magento\Framework\App\Filesystem\DirectoryList::MEDIA)->getAbsolutePath() . 'catalog/product'; $select = $connection->select() ->from(['cps' => $mediaGallery]); $data = $connection->fetchAll($select); foreach ($data as $value) { if (isset($value['value'])) { $path = $mediaPath . $value['value']; if (!file_exists($path)) { $url = SOURCE_MEDIA_URL . 'catalog/product' . $value['value']; $image = file_get_contents($url); if ($image) { @mkdir(dirname($path), 0777, true); $saved = file_put_contents($path, $image); if (!$saved) { echo 'Cannot save ' . $path . PHP_EOL; } else { //echo 'Saved ' . $path . PHP_EOL; } } else { echo 'Cannot load ' . $url . PHP_EOL; } } } }
після чого виконайте в консолі (CLI) команду:
php test.php