Files
gutachten_t3/typo3/install.php
T
2026-10-19 08:18:39 +02:00

106 lines
5.3 KiB
PHP

<?php
/*
* This file is part of the TYPO3 CMS project.
*
* It is free software; you can redistribute it and/or modify it under
* the terms of the GNU General Public License, either version 2
* of the License, or any later version.
*
* For the full copyright and license information, please read the
* LICENSE.txt file that was distributed with this source code.
*
* The TYPO3 project - inspiring people to share!
*/
/**
* Entry point to the install tool and step installer.
*
* There are two main controllers: "step" and "tool".
* The step controller is always called first, and redirects to the tool controller
* if the basic core functionality is given (instance configuration exists, database
* connection works, ...)
* The tool controller is the main "install tool" with all the main functionality.
*
* The step controller handles the basic installation.
* During first installation it creates the basic file and folder structure, the
* configuration files, the database connection and a basic configuration. Those steps
* are cycled through and if some step returns TRUE on "needsExecution", an input
* form of this step is rendered.
* After initial installation, the step installer is still called if the install
* tool is accessed, so it will automatically come up if some basic configuration fails.
* If everything is ok, the step installer will redirect to the main install tool.
* The step installer also has some "silent" update scripts, for example it migrates
* a localconf.php to LocalConfiguration if needed.
*
* This ensures as soon as the tool controller is called, the basic configuration is ok.
*
* Whenever the bootstrap or other core elements figure the installation
* needs an update that is handled within the step controller, it should just
* redirect to the entry script and let the step controller do necessary work.
*
* The step installer initiates browser redirects if steps were executed. This simplifies
* internal logic by separating the different bootstrap states needed during installation
* from each other.
*
* There is also a backend module controller, that basically only shows a screen
* with the "enable install tool" button and then redirects to the entry script. Other
* than that, it does not interfere with step or tool controller and just sets a
* context GET parameter to indicate that the install tool is called within backend context.
*
* To coordinate different tasks within step and install controller and actions, several
* GET or POST parameters are used, all prefixed with "install".
* Parameters allowed as GET and POST are preserved during redirects, POST parameters are
* thrown away between redirects (HTTP status code 303).
*
* The following main GET and POST parameters are used:
* - GET/POST "install[context]" Preserved
* Either empty, 'standalone' or 'backend', fallback to 'standalone'. Set to 'backend'
* if install tool is called form the backend main module (BackendModuleController). This
* changes the view a bit and shows the doc header in the install tool, changes background
* color and such.
*
* - GET/POST "install[controller]" Preserved
* Either empty, 'step' or 'tool', fallback to 'step'. This coordinates whether the step
* or tool controller is called. This parameter is never set externally, so the step
* controller is always called first. It itself sets the type to 'tool' and redirects to
* the tool controller if needed.
* This means you could (but shouldn't) directly call the tool controller, but it
* will still require a login and session, then.
*
* - GET/POST "install[action]" Preserved
* Determine step and tool controller main action sanitized by step / tool controller and
* only executed if user is logged in. Form protection API relies on this.
*
* - GET/POST "install[redirectCount]"
* The install tool initiates redirects to itself if configuration parameters were changed.
* This may lead to infinite redirect loops under rare circumstances. This parameter is
* incremented for each redirect to break a loop after some iterations.
*
* - POST "install[set]"
* Contains keys to determine which sub-action of the action is requested,
* eg. "change install tool password" in "important actions". Set to 'execute' if some
* step should be executed.
*
* - POST "install[values]"
* Data values for a specific "install[set]" action
*
* - POST "install[token]"
* A session and instance specific token created from the instance specific
* encryptionKey (taken care of in an early point in the step controller). This hash
* is used as form protection against CSRF for all POST data. Both the step and tool
* controller will logout a user if the token check fails. The only exception to this
* handling is the very first installation step where no session and no encryption key
* can exist yet.
*/
// Exit early if php requirement is not satisfied.
if (PHP_VERSION_ID < 70200) {
die('This version of TYPO3 CMS requires PHP 7.2 or above');
}
call_user_func(function () {
$classLoader = require dirname(dirname(__DIR__)).'/vendor/autoload.php';
\TYPO3\CMS\Core\Core\SystemEnvironmentBuilder::run(1, \TYPO3\CMS\Core\Core\SystemEnvironmentBuilder::REQUESTTYPE_INSTALL);
\TYPO3\CMS\Core\Core\Bootstrap::init($classLoader, true)->get(\TYPO3\CMS\Install\Http\Application::class)->run();
});