| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384 | <?php/** * Public media files entry point * * Copyright © Magento, Inc. All rights reserved. * See COPYING.txt for license details. */use Magento\Framework\App\Cache\Frontend\Factory;use Magento\Framework\App\ObjectManagerFactory;use Magento\Framework\HTTP\PhpEnvironment\Request;use Magento\Framework\Stdlib\Cookie\PhpCookieReader;require dirname(__DIR__) . '/app/bootstrap.php';$mediaDirectory = null;$allowedResources = [];$configCacheFile = BP . '/var/resource_config.json';$isAllowed = function ($resource, array $allowedResources) {    foreach ($allowedResources as $allowedResource) {        if (0 === stripos($resource, $allowedResource)) {            return true;        }    }    return false;};$request = new \Magento\MediaStorage\Model\File\Storage\Request(    new Request(        new PhpCookieReader(),        new Magento\Framework\Stdlib\StringUtils()    ));$relativePath = $request->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) {            if (!$isAllowed($relativePath, $allowedResources)) {                require_once 'errors/404.php';                exit;            }            $mediaAbsPath = $mediaDirectory . '/' . $relativePath;            if (is_readable($mediaAbsPath)) {                if (is_dir($mediaAbsPath)) {                    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($mediaAbsPath);                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);
 |