public/index.php line 63

  1. <?php declare(strict_types=1);
  2. use Shopware\Core\HttpKernel;
  3. use Shopware\Core\Installer\InstallerKernel;
  4. use Symfony\Component\HttpFoundation\Request;
  5. use Symfony\Component\HttpFoundation\Response;
  6. use Symfony\Component\HttpKernel\HttpKernelInterface;
  7. use Symfony\Component\HttpKernel\TerminableInterface;
  8. $_SERVER['SCRIPT_FILENAME'] = __FILE__;
  9. require_once __DIR__ '/../vendor/autoload_runtime.php';
  10. if (!file_exists(__DIR__ '/../.env') && !file_exists(__DIR__ '/../.env.dist') && !file_exists(__DIR__ '/../.env.local.php')) {
  11.     $_SERVER['APP_RUNTIME_OPTIONS']['disable_dotenv'] = true;
  12. }
  13. return function (array $context) {
  14.     $classLoader = require __DIR__ '/../vendor/autoload.php';
  15.     if (!file_exists(dirname(__DIR__) . '/install.lock')) {
  16.         $baseURL str_replace(basename(__FILE__), ''$_SERVER['SCRIPT_NAME']);
  17.         $baseURL rtrim($baseURL'/');
  18.         if (strpos($_SERVER['REQUEST_URI'], '/installer') === false) {
  19.             header('Location: ' $baseURL '/installer');
  20.             exit;
  21.         }
  22.     }
  23.     $appEnv $context['APP_ENV'] ?? 'dev';
  24.     $debug = (bool) ($context['APP_DEBUG'] ?? ($appEnv !== 'prod'));
  25.     $trustedProxies $context['TRUSTED_PROXIES'] ?? false;
  26.     if ($trustedProxies) {
  27.         Request::setTrustedProxies(
  28.             explode(','$trustedProxies),
  29.             Request::HEADER_X_FORWARDED_FOR Request::HEADER_X_FORWARDED_PORT Request::HEADER_X_FORWARDED_PROTO
  30.         );
  31.     }
  32.     $trustedHosts $context['TRUSTED_HOSTS'] ?? false;
  33.     if ($trustedHosts) {
  34.         Request::setTrustedHosts(explode(','$trustedHosts));
  35.     }
  36.     if (!file_exists(dirname(__DIR__) . '/install.lock')) {
  37.         return new InstallerKernel($appEnv$debug);
  38.     }
  39.     $shopwareHttpKernel = new HttpKernel($appEnv$debug$classLoader);
  40.     return new class($shopwareHttpKernel) implements HttpKernelInterfaceTerminableInterface {
  41.         private HttpKernel $httpKernel;
  42.         public function __construct(HttpKernel $httpKernel)
  43.         {
  44.             $this->httpKernel $httpKernel;
  45.         }
  46.         public function handle(Request $requestint $type self::MAIN_REQUESTbool $catch true): Response
  47.         {
  48.             return $this->httpKernel->handle($request$type$catch)->getResponse();
  49.         }
  50.         public function terminate(Request $requestResponse $response): void
  51.         {
  52.             $this->httpKernel->terminate($request$response);
  53.         }
  54.     };
  55. };