public/index.php line 86

Open in your IDE?
  1. <?php declare(strict_types=1);
  2. use Shopware\Production\HttpKernel;
  3. use Symfony\Component\Dotenv\Dotenv;
  4. use Symfony\Component\ErrorHandler\Debug;
  5. use Symfony\Component\HttpFoundation\Request;
  6. if (\PHP_VERSION_ID < 70400) {
  7.     header('Content-type: text/html; charset=utf-8', true, 503);
  8.     echo '<h2>Error</h2>';
  9.     echo 'Your server is running PHP version ' . \PHP_VERSION . ' but Shopware 6 requires at least PHP 7.4.0';
  10.     exit(1);
  11. }
  12. if( $_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https' ) 
  13. {       
  14.     $_SERVER['HTTPS'] = 'ON';  
  15. }
  16. $classLoader = require __DIR__ . '/../vendor/autoload.php';
  17. if (!file_exists(dirname(__DIR__) . '/install.lock')) {
  18.     $basePath = 'recovery/install';
  19.     $baseURL = str_replace(basename(__FILE__), '', $_SERVER['SCRIPT_NAME']);
  20.     $baseURL = rtrim($baseURL, '/');
  21.     $installerURL = $baseURL . '/' . $basePath . '/index.php';
  22.     if (strpos($_SERVER['REQUEST_URI'], $basePath) === false) {
  23.         header('Location: ' . $installerURL);
  24.         exit;
  25.     }
  26. }
  27. if (is_file(dirname(__DIR__) . '/files/update/update.json') || is_dir(dirname(__DIR__) . '/update-assets')) {
  28.     header('Content-type: text/html; charset=utf-8', true, 503);
  29.     header('Status: 503 Service Temporarily Unavailable');
  30.     header('Retry-After: 1200');
  31.     if (file_exists(__DIR__ . '/maintenance.html')) {
  32.         readfile(__DIR__ . '/maintenance.html');
  33.     } else {
  34.         readfile(__DIR__ . '/recovery/update/maintenance.html');
  35.     }
  36.     return;
  37. }
  38. // The check is to ensure we don't use .env if APP_ENV is defined
  39. if (!isset($_SERVER['APP_ENV']) && !isset($_ENV['APP_ENV'])) {
  40.     if (!class_exists(Dotenv::class)) {
  41.         throw new \RuntimeException('APP_ENV environment variable is not defined. You need to define environment variables for configuration or add "symfony/dotenv" as a Composer dependency to load variables from a .env file.');
  42.     }
  43.     $envFile = __DIR__ . '/../.env';
  44.     if (file_exists($envFile)) {
  45.         (new Dotenv())
  46.             ->usePutenv(true)
  47.             ->load($envFile);
  48.     }
  49. }
  50. $appEnv = $_SERVER['APP_ENV'] ?? $_ENV['APP_ENV'] ?? 'dev';
  51. $debug = (bool) ($_SERVER['APP_DEBUG'] ?? $_ENV['APP_DEBUG'] ?? ($appEnv !== 'prod'));
  52. if ($debug) {
  53.     umask(0000);
  54.     Debug::enable();
  55. }
  56. $trustedProxies = $_SERVER['TRUSTED_PROXIES'] ?? $_ENV['TRUSTED_PROXIES'] ?? false;
  57. if ($trustedProxies) {
  58.     Request::setTrustedProxies(explode(',', $trustedProxies), Request::HEADER_X_FORWARDED_FOR | Request::HEADER_X_FORWARDED_PORT | Request::HEADER_X_FORWARDED_PROTO);
  59. }
  60. $trustedHosts = $_SERVER['TRUSTED_HOSTS'] ?? $_ENV['TRUSTED_HOSTS'] ?? false;
  61. if ($trustedHosts) {
  62.     Request::setTrustedHosts(explode(',', $trustedHosts));
  63. }
  64. $request = Request::createFromGlobals();
  65. $kernel = new HttpKernel($appEnv, $debug, $classLoader);
  66. $result = $kernel->handle($request);
  67. $result->getResponse()->send();
  68. $kernel->terminate($result->getRequest(), $result->getResponse());