public/index.php line 15

  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($classLoadernull);
  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($classLoadernull)
  58.         );
  59.     }
  60.     return new class($shopwareHttpKernel) implements HttpKernelInterfaceTerminableInterface {
  61.         private HttpKernel $httpKernel;
  62.         public function __construct(HttpKernel $httpKernel)
  63.         {
  64.             $this->httpKernel $httpKernel;
  65.         }
  66.         public function handle(Request $requestint $type self::MAIN_REQUESTbool $catch true): Response
  67.         {
  68.             return $this->httpKernel->handle($request$type$catch)->getResponse();
  69.         }
  70.         public function terminate(Request $requestResponse $response): void
  71.         {
  72.             $this->httpKernel->terminate($request$response);
  73.         }
  74.     };
  75. };