public/index.php line 78

  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. $_SERVER['APP_RUNTIME_OPTIONS']['prod_envs'] = ['prod''e2e'];
  14. return function (array $context) {
  15.     $classLoader = require __DIR__ '/../vendor/autoload.php';
  16.     if (!file_exists(dirname(__DIR__) . '/install.lock')) {
  17.         $baseURL str_replace(basename(__FILE__), ''$_SERVER['SCRIPT_NAME']);
  18.         $baseURL rtrim($baseURL'/');
  19.         if (strpos($_SERVER['REQUEST_URI'], '/installer') === false) {
  20.             header('Location: ' $baseURL '/installer');
  21.             exit;
  22.         }
  23.     }
  24.     if (is_file(dirname(__DIR__) . '/files/update/update.json') || is_dir(dirname(__DIR__) . '/update-assets')) {
  25.         header('Content-type: text/html; charset=utf-8'true503);
  26.         header('Status: 503 Service Temporarily Unavailable');
  27.         header('Retry-After: 1200');
  28.         if (file_exists(__DIR__ '/maintenance.html')) {
  29.             readfile(__DIR__ '/maintenance.html');
  30.         } else {
  31.             readfile(__DIR__ '/recovery/update/maintenance.html');
  32.         }
  33.         exit;
  34.     }
  35.     $appEnv $context['APP_ENV'] ?? 'dev';
  36.     $debug = (bool) ($context['APP_DEBUG'] ?? ($appEnv !== 'prod'));
  37.     $trustedProxies $context['TRUSTED_PROXIES'] ?? false;
  38.     if ($trustedProxies) {
  39.         Request::setTrustedProxies(
  40.             explode(','$trustedProxies),
  41.             Request::HEADER_X_FORWARDED_FOR Request::HEADER_X_FORWARDED_PORT Request::HEADER_X_FORWARDED_PROTO Request::HEADER_X_FORWARDED_HOST
  42.         );
  43.     }
  44.     $trustedHosts $context['TRUSTED_HOSTS'] ?? false;
  45.     if ($trustedHosts) {
  46.         Request::setTrustedHosts(explode(','$trustedHosts));
  47.     }
  48.     if (!file_exists(dirname(__DIR__) . '/install.lock')) {
  49.         return new InstallerKernel($appEnv$debug);
  50.     }
  51.     $shopwareHttpKernel = new HttpKernel($appEnv$debug$classLoader);
  52.     return new class($shopwareHttpKernel) implements HttpKernelInterfaceTerminableInterface {
  53.         private HttpKernel $httpKernel;
  54.         public function __construct(HttpKernel $httpKernel)
  55.         {
  56.             $this->httpKernel $httpKernel;
  57.         }
  58.         public function handle(Request $requestint $type self::MAIN_REQUESTbool $catch true): Response
  59.         {
  60.             return $this->httpKernel->handle($request$type$catch)->getResponse();
  61.         }
  62.         public function terminate(Request $requestResponse $response): void
  63.         {
  64.             $this->httpKernel->terminate($request$response);
  65.         }
  66.     };
  67. };