From 96a9c7217d754c39875476a69558a90f06b74922 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B6rn=20Fromme?= Date: Wed, 21 Oct 2026 16:22:17 +0200 Subject: [PATCH] chore: production-safe settings, development values only in DDEV settings.php now holds production values (no debug, no devIPmask, displayErrors off, warnings logged instead of thrown, deprecation log off, sendmail, trustedHostsPattern for the production domains, FE.compressionLevel 0 as the CDN compresses). The development values moved into the DDEV block of additional.php. secrets.example.php gets the production database connection. Composer platform: PHP 8.5.12 (the version Hetzner rolls out). Deployer 8 as dev dependency for the deployment. Co-Authored-By: Claude Opus 5.5 --- composer.json | 3 +- composer.lock | 123 +++++++++++++++++++++++++++++- config/system/additional.php | 21 +++++ config/system/secrets.example.php | 11 +++ config/system/settings.php | 16 ++-- 5 files changed, 164 insertions(+), 10 deletions(-) diff --git a/composer.json b/composer.json index 8afa684..006d109 100644 --- a/composer.json +++ b/composer.json @@ -10,7 +10,7 @@ "a9f/fractor-extension-installer": true }, "platform": { - "php": "8.5.11" + "php": "8.5.12" }, "sort-packages": true }, @@ -56,6 +56,7 @@ ], "require-dev": { "a9f/typo3-fractor": "^1.1", + "deployer/deployer": "^8.0", "ssch/typo3-rector": "^3.16" } } diff --git a/composer.lock b/composer.lock index 5905dbc..cd70bfe 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "9de2907eea881944a362013a40f3cc7e", + "content-hash": "bcb472ad98cfa2a48699faed4f6366e8", "packages": [ { "name": "b13/container", @@ -8876,6 +8876,71 @@ }, "time": "2026-09-25T12:42:45+00:00" }, + { + "name": "deployer/deployer", + "version": "v8.0.5", + "source": { + "type": "git", + "url": "https://github.com/deployphp/deployer.git", + "reference": "199273500b4f14ff5eafd76bea524e5d44bcaff3" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/deployphp/deployer/zipball/199273500b4f14ff5eafd76bea524e5d44bcaff3", + "reference": "199273500b4f14ff5eafd76bea524e5d44bcaff3", + "shasum": "" + }, + "require": { + "maml/maml": "^3.2", + "php": "^8.3", + "symfony/console": "^7.4.0 || ^8.0.0", + "symfony/process": "^7.4.0 || ^8.0.0", + "symfony/yaml": "^7.4.0 || ^8.0.0" + }, + "require-dev": { + "friendsofphp/php-cs-fixer": "^3.68", + "phpstan/phpstan": "^2.1", + "phpunit/php-code-coverage": "^12.0", + "phpunit/phpunit": "^12.5" + }, + "bin": [ + "bin/dep" + ], + "type": "library", + "autoload": { + "files": [ + "src/functions.php", + "src/Support/helpers.php" + ], + "psr-4": { + "Deployer\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Anton Medvedev", + "email": "anton@medv.io" + } + ], + "description": "Deployment Tool", + "homepage": "https://deployer.org", + "support": { + "docs": "https://deployer.org/docs", + "issues": "https://github.com/deployphp/deployer/issues", + "source": "https://github.com/deployphp/deployer" + }, + "funding": [ + { + "url": "https://github.com/sponsors/antonmedv", + "type": "github" + } + ], + "time": "2026-05-18T16:59:34+00:00" + }, { "name": "helmich/typo3-typoscript-parser", "version": "v2.8.1", @@ -9175,6 +9240,60 @@ ], "time": "2026-07-09T11:49:27+00:00" }, + { + "name": "maml/maml", + "version": "v3.2.0", + "source": { + "type": "git", + "url": "https://github.com/maml-dev/maml-php.git", + "reference": "f11cdff4325bf399f23c33fc1995450e40ac0854" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/maml-dev/maml-php/zipball/f11cdff4325bf399f23c33fc1995450e40ac0854", + "reference": "f11cdff4325bf399f23c33fc1995450e40ac0854", + "shasum": "" + }, + "require": { + "ext-mbstring": "*", + "php": ">=8.2" + }, + "require-dev": { + "php-cs-fixer/shim": "^3.94", + "phpstan/phpstan": "^2.1", + "phpunit/phpunit": "^10.0 || ^11.0 || ^12.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Maml\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Anton Medvedev", + "email": "anton@medv.io" + } + ], + "description": "MAML Parser", + "homepage": "https://maml.dev", + "keywords": [ + "config", + "configuration", + "maml", + "parser", + "serializer" + ], + "support": { + "issues": "https://github.com/maml-dev/maml-php/issues", + "source": "https://github.com/maml-dev/maml-php/tree/v3.2.0" + }, + "time": "2026-04-12T16:50:36+00:00" + }, { "name": "nette/utils", "version": "v4.1.6", @@ -9908,7 +10027,7 @@ "platform": {}, "platform-dev": {}, "platform-overrides": { - "php": "8.5.11" + "php": "8.5.12" }, "plugin-api-version": "2.9.0" } diff --git a/config/system/additional.php b/config/system/additional.php index c881580..c648e23 100644 --- a/config/system/additional.php +++ b/config/system/additional.php @@ -35,6 +35,27 @@ if (getenv('IS_DDEV_PROJECT') == 'true') { 'trustedHostsPattern' => '.*.*', 'devIPmask' => '*', 'displayErrors' => 1, + // Warnings and deprecations are exceptions locally: they are how PHP 7.4 leftovers show up + 'exceptionalErrors' => 12290, + ], + 'BE' => [ + 'debug' => true, + ], + 'FE' => [ + 'debug' => true, + ], + 'LOG' => [ + 'TYPO3' => [ + 'CMS' => [ + 'deprecations' => [ + 'writerConfiguration' => [ + 'notice' => [ + \TYPO3\CMS\Core\Log\Writer\FileWriter::class => ['disabled' => false], + ], + ], + ], + ], + ], ], ] ); diff --git a/config/system/secrets.example.php b/config/system/secrets.example.php index 7efa79e..d5dd50b 100644 --- a/config/system/secrets.example.php +++ b/config/system/secrets.example.php @@ -3,6 +3,17 @@ // Template for config/system/secrets.php (not in Git). Values come from the TYPO3 10 // production LocalConfiguration.php; empty values are ignored. return [ + // Production only (DDEV brings its own database settings) + 'DB' => [ + 'Connections' => [ + 'Default' => [ + 'dbname' => '', + 'host' => '', + 'password' => '', + 'user' => '', + ], + ], + ], 'SYS' => [ // Must be the production key of TYPO3 10: static pages link to cHash URLs served by TYPO3 13 'encryptionKey' => '', diff --git a/config/system/settings.php b/config/system/settings.php index 9ad7881..d5d44bb 100644 --- a/config/system/settings.php +++ b/config/system/settings.php @@ -1,7 +1,7 @@ [ - 'debug' => true, + 'debug' => false, 'installToolPassword' => '$argon2i$v=19$m=65536,t=16,p=1$NVBiTmJvdEljbWY0WmdjUg$YRkMEpjn+hVLAZWWrrU9wIhVgZ3pPhSnPQyB/7+7Z1g', 'passwordHashing' => [ 'className' => 'TYPO3\\CMS\\Core\\Crypto\\PasswordHashing\\Argon2iPasswordHash', @@ -74,12 +74,13 @@ return [ 'cacheHash' => [ 'enforceValidation' => true, ], - 'debug' => true, + 'debug' => false, 'disableNoCacheParameter' => true, 'passwordHashing' => [ 'className' => 'TYPO3\\CMS\\Core\\Crypto\\PasswordHashing\\Argon2iPasswordHash', 'options' => [], ], + 'compressionLevel' => 0, ], 'GFX' => [ 'processor' => 'GraphicsMagick', @@ -94,7 +95,7 @@ return [ 'writerConfiguration' => [ 'notice' => [ 'TYPO3\CMS\Core\Log\Writer\FileWriter' => [ - 'disabled' => false, + 'disabled' => true, ], ], ], @@ -104,7 +105,7 @@ return [ ], 'MAIL' => [ 'transport' => 'sendmail', - 'transport_sendmail_command' => '/usr/local/bin/mailpit sendmail -t --smtp-addr 127.0.0.1:1025', + 'transport_sendmail_command' => '/usr/sbin/sendmail -t -i', 'transport_smtp_encrypt' => '', 'transport_smtp_password' => '', 'transport_smtp_server' => '', @@ -131,10 +132,10 @@ return [ ], ], ], - 'devIPmask' => '*', - 'displayErrors' => 1, + 'devIPmask' => '', + 'displayErrors' => 0, 'encryptionKey' => '0ad297595e43cb5f668bdf7878eaea7002a4193fd26d2742a3a708b4b0715bcfabdae84a47ca8517d55732d9ea72a26a', - 'exceptionalErrors' => 12290, + 'exceptionalErrors' => 4096, 'features' => [ 'extbase.consistentDateTimeHandling' => true, 'frontend.cache.autoTagging' => true, @@ -144,5 +145,6 @@ return [ 'systemMaintainers' => [ 1, ], + 'trustedHostsPattern' => '(?:[a-z0-9-]+\\.)?(?:ep-reisen\\.de|ski-boarderweek\\.(?:de|com|eu)|skiboarderweek\\.(?:de|eu)|snowzone\\.net|unichamp\\.de|snow-break\\.(?:de|com)|semesterende-skireisen\\.de|alpinevacation\\.ch|cllt-touristik\\.at|ep-events\\.de|ski-wochenenden\\.de)', ], ];