loadEnv(_PS_FRONT_DIR_ . '/.env'); // If we want to use new container access in front (Warning: Experimental feature from now!) if (isset($_ENV['PS_FF_FRONT_CONTAINER_V2']) && filter_var($_ENV['PS_FF_FRONT_CONTAINER_V2'], \FILTER_VALIDATE_BOOL)) { // Activate Symfony's debug if we need it if (_PS_MODE_DEV_) { Debug::enable(); } // Block the process until the cache clear is in progress, this must be done before the kernel is created so it doesn't // try to use the old container CacheClearLocker::waitUntilUnlocked(_PS_ENV_, _PS_APP_ID_); // Starting Kernel $kernel = new FrontKernel(_PS_ENV_, _PS_MODE_DEV_); $request = Request::createFromGlobals(); /* * Initialize legacy dispatcher request at the initial stage of the request. If we don't do it now, * the dispatcher could be created later by legacy classes. But, at that point, the request * could already be modified, for examply by move_uploaded_file. That would cause createFromGlobals * to crash. */ Dispatcher::setRequest($request); // Try to handle request try { $response = $kernel->handle($request, HttpKernelInterface::MAIN_REQUEST, false); $response->send(); define('FRONT_LEGACY_CONTEXT', false); $kernel->terminate($request, $response); } catch (NotFoundHttpException|Exception $exception) { // correct Apache charset (except if it's too late) if (!headers_sent()) { header('Content-Type: text/html; charset=utf-8'); } } } // Prepare and trigger LEGACY front dispatcher define('FRONT_LEGACY_CONTEXT', true); Dispatcher::getInstance()->dispatch();