public/index.php line 86

Open in your IDE?
  1. <?php declare(strict_types=1);
  2. use Shopware\Core\HttpKernel;
  3. use Shopware\Core\Installer\InstallerKernel;
  4. use Symfony\Component\Dotenv\Dotenv;
  5. use Symfony\Component\ErrorHandler\Debug;
  6. use Symfony\Component\HttpFoundation\Request;
  7. use Symfony\Component\HttpFoundation\Response;
  8. if (\PHP_VERSION_ID 70403) {
  9.     header('Content-type: text/html; charset=utf-8'true503);
  10.     echo '<h2>Error</h2>';
  11.     echo 'Your server is running PHP version ' \PHP_VERSION ' but Shopware 6 requires at least PHP 7.4.3';
  12.     exit(1);
  13. }
  14. assert_options(ASSERT_ACTIVE0);
  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.     /* @deprecated tag:v6.5.0 remove if condition and else block, only the new installer will be supported */
  20.     if (class_exists(InstallerKernel::class)) {
  21.         $installerURL $baseURL '/installer';
  22.     } else {
  23.         $installerURL $baseURL '/recovery/install/index.php';
  24.     }
  25.     if (strpos($_SERVER['REQUEST_URI'], '/installer') === false) {
  26.         header('Location: ' $installerURL);
  27.         exit;
  28.     }
  29. }
  30. if (is_file(dirname(__DIR__) . '/files/update/update.json') || is_dir(dirname(__DIR__) . '/update-assets')) {
  31.     header('Content-type: text/html; charset=utf-8'true503);
  32.     header('Status: 503 Service Temporarily Unavailable');
  33.     header('Retry-After: 1200');
  34.     if (file_exists(__DIR__ '/maintenance.html')) {
  35.         readfile(__DIR__ '/maintenance.html');
  36.     } else {
  37.         readfile(__DIR__ '/recovery/update/maintenance.html');
  38.     }
  39.     return;
  40. }
  41. $projectRoot dirname(__DIR__);
  42. if (class_exists(Dotenv::class) && (file_exists($projectRoot '/.env.local.php') || file_exists($projectRoot '/.env') || file_exists($projectRoot '/.env.dist'))) {
  43.     (new Dotenv())->usePutenv()->setProdEnvs(['prod''e2e'])->bootEnv(dirname(__DIR__) . '/.env');
  44. }
  45. $appEnv $_SERVER['APP_ENV'] ?? $_ENV['APP_ENV'] ?? 'dev';
  46. $debug = (bool) ($_SERVER['APP_DEBUG'] ?? $_ENV['APP_DEBUG'] ?? ($appEnv !== 'prod' && $appEnv !== 'e2e'));
  47. if ($debug) {
  48.     umask(0000);
  49.     Debug::enable();
  50. }
  51. $trustedProxies $_SERVER['TRUSTED_PROXIES'] ?? $_ENV['TRUSTED_PROXIES'] ?? false;
  52. if ($trustedProxies) {
  53.     Request::setTrustedProxies(explode(','$trustedProxies), Request::HEADER_X_FORWARDED_FOR Request::HEADER_X_FORWARDED_PORT Request::HEADER_X_FORWARDED_PROTO);
  54. }
  55. $trustedHosts $_SERVER['TRUSTED_HOSTS'] ?? $_ENV['TRUSTED_HOSTS'] ?? false;
  56. if ($trustedHosts) {
  57.     Request::setTrustedHosts(explode(','$trustedHosts));
  58. }
  59. $request Request::createFromGlobals();
  60. if (file_exists(dirname(__DIR__) . '/install.lock')) {
  61.     $kernel = new HttpKernel($appEnv$debug$classLoader);
  62.     if ($_SERVER['COMPOSER_PLUGIN_LOADER'] ?? $_SERVER['DISABLE_EXTENSIONS'] ?? false) {
  63.         $kernel->setPluginLoader(new \Shopware\Core\Framework\Plugin\KernelPluginLoader\ComposerPluginLoader($classLoader));
  64.     }
  65. } else {
  66.     $kernel = new InstallerKernel($appEnv$debug);
  67. }
  68. $result $kernel->handle($request);
  69. if ($result instanceof Response) {
  70.     $result->send();
  71.     $kernel->terminate($request$result);
  72. } else {
  73.     $result->getResponse()->send();
  74.     $kernel->terminate($result->getRequest(), $result->getResponse());
  75. }