public/index.php line 76

Open in your IDE?
  1. <?php 
  2. declare(strict_types=1);
  3. use Shopware\Production\HttpKernel;
  4. use Symfony\Component\Dotenv\Dotenv;
  5. use Symfony\Component\ErrorHandler\Debug;
  6. use Symfony\Component\HttpFoundation\Request;
  7. if (\PHP_VERSION_ID < 70403) {
  8.     header('Content-type: text/html; charset=utf-8', true, 503);
  9.     echo '<h2>Error</h2>';
  10.     echo 'Your server is running PHP version ' . \PHP_VERSION . ' but Shopware 6 requires at least PHP 7.4.3';
  11.     exit(1);
  12. }
  13. $classLoader = require __DIR__ . '/../vendor/autoload.php';
  14. if (!file_exists(dirname(__DIR__) . '/install.lock')) {
  15.     $basePath = 'recovery/install';
  16.     $baseURL = str_replace(basename(__FILE__), '', $_SERVER['SCRIPT_NAME']);
  17.     $baseURL = rtrim($baseURL, '/');
  18.     $installerURL = $baseURL . '/' . $basePath . '/index.php';
  19.     if (strpos($_SERVER['REQUEST_URI'], $basePath) === false) {
  20.         header('Location: ' . $installerURL);
  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', true, 503);
  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.     return;
  34. }
  35. $projectRoot = dirname(__DIR__);
  36. if (class_exists(Dotenv::class) && (file_exists($projectRoot . '/.env.local.php') || file_exists($projectRoot . '/.env') || file_exists($projectRoot . '/.env.dist'))) {
  37.     (new Dotenv())->usePutenv()->setProdEnvs(['prod', 'e2e'])->bootEnv(dirname(__DIR__) . '/.env');
  38. }
  39. $appEnv = $_SERVER['APP_ENV'] ?? $_ENV['APP_ENV'] ?? 'dev';
  40. $debug = (bool) ($_SERVER['APP_DEBUG'] ?? $_ENV['APP_DEBUG'] ?? ($appEnv !== 'prod' && $appEnv !== 'e2e'));
  41. if ($debug) {
  42.     umask(0000);
  43.     Debug::enable();
  44. }
  45. $trustedProxies = $_SERVER['TRUSTED_PROXIES'] ?? $_ENV['TRUSTED_PROXIES'] ?? false;
  46. if ($trustedProxies) {
  47.     Request::setTrustedProxies(explode(',', $trustedProxies), Request::HEADER_X_FORWARDED_FOR | Request::HEADER_X_FORWARDED_PORT | Request::HEADER_X_FORWARDED_PROTO);
  48. }
  49. $trustedHosts = $_SERVER['TRUSTED_HOSTS'] ?? $_ENV['TRUSTED_HOSTS'] ?? false;
  50. if ($trustedHosts) {
  51.     Request::setTrustedHosts(explode(',', $trustedHosts));
  52. }
  53. $request = Request::createFromGlobals();
  54. $kernel = new HttpKernel($appEnv, $debug, $classLoader);
  55. if ($_SERVER['COMPOSER_PLUGIN_LOADER'] ?? $_SERVER['DISABLE_EXTENSIONS'] ?? false) {
  56.     $kernel->setPluginLoader(new \Shopware\Core\Framework\Plugin\KernelPluginLoader\ComposerPluginLoader($classLoader));
  57. }
  58. $result = $kernel->handle($request);
  59. $result->getResponse()->send();
  60. $kernel->terminate($result->getRequest(), $result->getResponse());