public/index.php line 86

Open in your IDE?
  1. <?php declare(strict_types=1);
  2. use Shopware\Core\DevOps\Environment\EnvironmentHelper;
  3. use Shopware\Core\Framework\Plugin\KernelPluginLoader\ComposerPluginLoader;
  4. use Shopware\Core\HttpKernel;
  5. use Shopware\Core\Installer\InstallerKernel;
  6. use Symfony\Component\HttpFoundation\Request;
  7. use Shopware\Core\Framework\Adapter\Kernel\KernelFactory;
  8. use Symfony\Component\HttpFoundation\Response;
  9. use Symfony\Component\HttpKernel\HttpKernelInterface;
  10. use Symfony\Component\HttpKernel\TerminableInterface;
  11. $_SERVER['SCRIPT_FILENAME'] = __FILE__;
  12. require_once __DIR__ . '/../vendor/autoload_runtime.php';
  13. if (!file_exists(__DIR__ . '/../.env') && !file_exists(__DIR__ . '/../.env.dist') && !file_exists(__DIR__ . '/../.env.local.php')) {
  14.     $_SERVER['APP_RUNTIME_OPTIONS']['disable_dotenv'] = true;
  15. }
  16. return function (array $context) {
  17.     $classLoader = require __DIR__ . '/../vendor/autoload.php';
  18.     if (!EnvironmentHelper::getVariable('SHOPWARE_SKIP_WEBINSTALLER', false) && !file_exists(dirname(__DIR__) . '/install.lock')) {
  19.         $baseURL = str_replace(basename(__FILE__), '', $_SERVER['SCRIPT_NAME']);
  20.         $baseURL = rtrim($baseURL, '/');
  21.         if (strpos($_SERVER['REQUEST_URI'], '/installer') === false) {
  22.             header('Location: ' . $baseURL . '/installer');
  23.             exit;
  24.         }
  25.     }
  26.     $appEnv = $context['APP_ENV'] ?? 'dev';
  27.     $debug = (bool) ($context['APP_DEBUG'] ?? ($appEnv !== 'prod'));
  28.     $trustedProxies = $context['TRUSTED_PROXIES'] ?? false;
  29.     if ($trustedProxies) {
  30.         Request::setTrustedProxies(
  31.             explode(',', $trustedProxies),
  32.             Request::HEADER_X_FORWARDED_FOR | Request::HEADER_X_FORWARDED_PORT | Request::HEADER_X_FORWARDED_PROTO
  33.         );
  34.     }
  35.     $trustedHosts = $context['TRUSTED_HOSTS'] ?? false;
  36.     if ($trustedHosts) {
  37.         Request::setTrustedHosts(explode(',', $trustedHosts));
  38.     }
  39.     if (!EnvironmentHelper::getVariable('SHOPWARE_SKIP_WEBINSTALLER', false) && !file_exists(dirname(__DIR__) . '/install.lock')) {
  40.         return new InstallerKernel($appEnv, $debug);
  41.     }
  42.     if (method_exists(KernelFactory::class, "create")) {
  43.         $pluginLoader = null;
  44.         if (EnvironmentHelper::getVariable('COMPOSER_PLUGIN_LOADER', false)) {
  45.             $pluginLoader = new ComposerPluginLoader($classLoader, null);
  46.         }
  47.         return KernelFactory::create(
  48.             environment: $appEnv,
  49.             debug: $debug,
  50.             classLoader: $classLoader,
  51.             pluginLoader: $pluginLoader
  52.         );
  53.     }
  54.     $shopwareHttpKernel = new HttpKernel($appEnv, $debug, $classLoader);
  55.     if (EnvironmentHelper::getVariable('COMPOSER_PLUGIN_LOADER', false)) {
  56.         $shopwareHttpKernel->setPluginLoader(
  57.             new ComposerPluginLoader($classLoader, null)
  58.         );
  59.     }
  60.     return new class($shopwareHttpKernel) implements HttpKernelInterface, TerminableInterface {
  61.         private HttpKernel $httpKernel;
  62.         public function __construct(HttpKernel $httpKernel)
  63.         {
  64.             $this->httpKernel = $httpKernel;
  65.         }
  66.         public function handle(Request $request, int $type = self::MAIN_REQUEST, bool $catch = true): Response
  67.         {
  68.             return $this->httpKernel->handle($request, $type, $catch)->getResponse();
  69.         }
  70.         public function terminate(Request $request, Response $response): void
  71.         {
  72.             $this->httpKernel->terminate($request, $response);
  73.         }
  74.     };
  75. };