public/index.php line 55

Open in your IDE?
  1. <?php
  2. use Doctrine\DBAL\DBALException;
  3. use PackageVersions\Versions;
  4. use Shopware\Core\Framework\Event\BeforeSendResponseEvent;
  5. use Shopware\Core\Framework\Adapter\Cache\CacheIdLoader;
  6. use Shopware\Core\Framework\Plugin\KernelPluginLoader\DbalKernelPluginLoader;
  7. use Shopware\Core\Framework\Routing\RequestTransformerInterface;
  8. use Shopware\Development\Kernel;
  9. use Shopware\Storefront\Framework\Cache\CacheStore;
  10. use Symfony\Component\Dotenv\Dotenv;
  11. use Symfony\Component\ErrorHandler\Debug;
  12. use Symfony\Component\HttpFoundation\Request;
  13. use Symfony\Component\HttpKernel\HttpCache\HttpCache;
  14. if (PHP_VERSION_ID 70200) {
  15.     header('Content-type: text/html; charset=utf-8'true503);
  16.     echo '<h2>Error</h2>';
  17.     echo 'Your server is running PHP version ' PHP_VERSION ' but Shopware 6 requires at least PHP 7.2.0';
  18.     exit();
  19. }
  20. $classLoader = require __DIR__.'/../vendor/autoload.php';
  21. // The check is to ensure we don't use .env if APP_ENV is defined
  22. if (!isset($_SERVER['APP_ENV']) && !isset($_ENV['APP_ENV'])) {
  23.     if (!class_exists(Dotenv::class)) {
  24.         throw new \RuntimeException('APP_ENV environment variable is not defined. You need to define environment variables for configuration or add "symfony/dotenv" as a Composer dependency to load variables from a .env file.');
  25.     }
  26.     (new Dotenv(true))->load(__DIR__.'/../.env');
  27. }
  28. $appEnv $_SERVER['APP_ENV'] ?? $_ENV['APP_ENV'] ?? 'dev';
  29. $debug = (bool) ($_SERVER['APP_DEBUG'] ?? $_ENV['APP_DEBUG'] ?? ('prod' !== $appEnv));
  30. if ($debug) {
  31.     umask(0000);
  32.     Debug::enable();
  33. }
  34. if ($trustedProxies $_SERVER['TRUSTED_PROXIES'] ?? $_ENV['TRUSTED_PROXIES'] ?? false) {
  35.     Request::setTrustedProxies(explode(','$trustedProxies), Request::HEADER_X_FORWARDED_ALL Request::HEADER_X_FORWARDED_HOST);
  36. }
  37. if ($trustedHosts $_SERVER['TRUSTED_HOSTS'] ?? $_ENV['TRUSTED_HOSTS'] ?? false) {
  38.     Request::setTrustedHosts(explode(','$trustedHosts));
  39. }
  40. if (class_exists('Shopware\Core\HttpKernel')) {
  41.     $request Request::createFromGlobals();
  42.     $kernel = new \Shopware\Development\HttpKernel($appEnv$debug$classLoader);
  43.     $result $kernel->handle($request);
  44.     $result->getResponse()->send();
  45.     $kernel->terminate($result->getRequest(), $result->getResponse());
  46.     return;
  47. }
  48. // resolve SEO urls
  49. $request Request::createFromGlobals();
  50. $connection Kernel::getConnection();
  51. if ($appEnv === 'dev') {
  52.     $connection->getConfiguration()->setSQLLogger(
  53.         new \Shopware\Core\Profiling\Doctrine\DebugStack()
  54.     );
  55. }
  56. try {
  57.     $shopwareVersion Versions::getVersion('shopware/platform');
  58.     $pluginLoader = new DbalKernelPluginLoader($classLoadernull$connection);
  59.     $cacheId = (new CacheIdLoader($connection))
  60.         ->load();
  61.     $kernel = new Kernel($appEnv$debug$pluginLoader$cacheId$shopwareVersion$connection);
  62.     $kernel->boot();
  63.     $container $kernel->getContainer();
  64.     // resolves seo urls and detects storefront sales channels
  65.     $request $container
  66.         ->get(RequestTransformerInterface::class)
  67.         ->transform($request);
  68.     $enabled $container->getParameter('shopware.http.cache.enabled');
  69.     if ($enabled) {
  70.         $store $container->get(CacheStore::class);
  71.         $kernel = new HttpCache($kernel$storenull, ['debug' => $debug]);
  72.     }
  73.     $response $kernel->handle($request);
  74.     $event = new BeforeSendResponseEvent($request$response);
  75.     $container->get('event_dispatcher')
  76.         ->dispatch($event);
  77.     $response $event->getResponse();
  78. } catch (DBALException $e) {
  79.     $message str_replace([$connection->getParams()['password'], $connection->getParams()['user']], '******'$e->getMessage());
  80.     throw new RuntimeException(sprintf('Could not connect to database. Message from SQL Server: %s'$message));
  81. }
  82. $response->send();
  83. $kernel->terminate($request$response);