public/index.php line 14

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