Створіть файл 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