first commit
This commit is contained in:
commit
1218dd1517
12716 files changed
+989233
No files matched your search
@@ -0,0 +1,105 @@
|
||||
<?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();
|
||||
});
|
||||
Reference in new issue
Block a user