typo3/cms-install
TYPO3 CMS Install tool and installation framework package. Provides the installer, upgrade wizards, environment checks, and setup utilities used to bootstrap and maintain a TYPO3 instance, including configuration, database setup, and system status diagnostics.
Locate the Install Tool
Access via /typo3/install.php in your TYPO3 CMS project. No additional installation required—it’s bundled with TYPO3.
First Use Case: Initial Setup
/typo3/install.php in a browser.typo3/sysext/install API.Where to Look First
typo3/sysext/install/Classes/ for core logic (e.g., InstallController, DatabaseAnalyzer).vendor/bin/typo3 install:analyze for automated checks (if extended).Automated Setup (Laravel-like)
InstallService to programmatically trigger tasks:
$installService = GeneralUtility::makeInstance(InstallService::class);
$installService->analyzeDatabase(); // Example: Run DB checks
ext_localconf.php:
$GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['install']['analyzeDatabase']['yourExtension'] =
\Vendor\YourExtension\Install\Analyzer::class;
Upgrade Paths
UpgradeWizard classes (e.g., typo3/sysext/install/Classes/UpgradeWizard/).class CustomUpgradeWizard extends AbstractUpgradeWizard {
public function execute() {
// Migration logic here
return ['success' => true];
}
}
System Administration
$installTool = GeneralUtility::makeInstance(InstallTool::class);
$installTool->checkDatabase(); // Returns array of issues
Laravel Compatibility:
$typo3Install = new \TYPO3\CMS\Install\Service\InstallService();
$result = $typo3Install->analyzeSystem();
typo3 install:analyze).Configuration Management:
LocalConfiguration.php (auto-generated by the tool).AdditionalConfiguration.php:
$GLOBALS['TYPO3_CONF_VARS']['BE']['installToolPassword'] = 'secure_hash';
Password Hashing
LocalConfiguration.php. Use:
$hashedPassword = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance(
\TYPO3\CMS\Core\Crypto\PasswordHashing\PasswordHashFactory::class
)->getDefaultHashInstance()->getHash('plaintext');
Database Locks
analyzeDatabase() during high-traffic periods—it locks tables.Extension Conflicts
$GLOBALS['TYPO3_CONF_VARS']['LOG']['TYPO3.CMS.Install']['writerConfiguration'] = [
\TYPO3\CMS\Core\Log\LogLevel::DEBUG => [
\TYPO3\CMS\Core\Log\Writer\FileWriter::class => ['logFile' => 'typo3temp/var/log/install_debug.log']
]
];
typo3temp/var/log/install_tool.log for errors during automated runs.Custom Analyzers
DatabaseAnalyzer or SystemAnalyzer for domain-specific checks:
class CustomAnalyzer implements \TYPO3\CMS\Install\Analyzer\AnalyzerInterface {
public function analyze() {
return ['custom_check' => $this->checkSomething()];
}
}
Post-Install Hooks
TYPO3_CONF_VARS['SC_OPTIONS']['install']['postProcessing'] to run logic after setup:
$GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['install']['postProcessing']['yourExtension'] =
\Vendor\YourExtension\Install\PostProcessor::class;
CLI Automation
// app/Console/Commands/RunTypo3Install.php
public function handle() {
$process = new \Symfony\Component\Process\Process(['typo3', 'install:analyze']);
$process->run();
$this->info($process->getOutput());
}
How can I help you explore Laravel packages today?