getPathInfo(); if (file_exists($configCacheFile) && is_readable($configCacheFile)) { $config = json_decode(file_get_contents($configCacheFile), true); //checking update time if (filemtime($configCacheFile) + $config['update_time'] > time()) { $mediaDirectory = $config['media_directory']; $allowedResources = $config['allowed_resources']; // Serve file if it's materialized if ($mediaDirectory) { $fileAbsolutePath = __DIR__ . '/' . $relativePath; $fileRelativePath = str_replace(rtrim($mediaDirectory, '/') . '/', '', $fileAbsolutePath); if (!$isAllowed($fileRelativePath, $allowedResources)) { require_once 'errors/404.php'; exit; } if (is_readable($fileAbsolutePath)) { if (is_dir($fileAbsolutePath)) { require_once 'errors/404.php'; exit; } $transfer = new \Magento\Framework\File\Transfer\Adapter\Http( new \Magento\Framework\HTTP\PhpEnvironment\Response(), new \Magento\Framework\File\Mime() ); $transfer->send($fileAbsolutePath); exit; } } } } // Materialize file in application $params = $_SERVER; if (empty($mediaDirectory)) { $params[ObjectManagerFactory::INIT_PARAM_DEPLOYMENT_CONFIG] = []; $params[Factory::PARAM_CACHE_FORCED_OPTIONS] = ['frontend_options' => ['disable_save' => true]]; } $bootstrap = \Magento\Framework\App\Bootstrap::create(BP, $params); /** @var \Magento\MediaStorage\App\Media $app */ $app = $bootstrap->createApplication( \Magento\MediaStorage\App\Media::class, [ 'mediaDirectory' => $mediaDirectory, 'configCacheFile' => $configCacheFile, 'isAllowed' => $isAllowed, 'relativeFileName' => $relativePath, ] ); $bootstrap->run($app);