Installation Version 12

Vorbemerkung

Als TYPO3 V12 noch nicht für den Produktiv Einsatz fertig war, habe ich zunächst eine lokale Installation durchgeführt, um meine Extensions für die Version 12 anzupassen und mein Responsive Template in der Version 8 für das neue TYPO3 zu entwickeln.

Da ich auf MacOSX arbeite ist die parallele Installation mehrerer PHP Versionen nicht so einfach zu bewerkstelligen. Deshalb habe ich mich nun doch auf eine Container basierte Installation eingelassen und habe mich für die DDEV basierte Installation entschieden.

Lokale Installation für Entwicklung mit DDEV

Umgebung einrichten

Zumächst muss man Docker Desktop installieren - Download unter https://www.docker.com/products/docker-desktop/ und Homebrew falls man das nicht bereits hat - https://brew.sh.

Dann geht es los mit nss Installation um https zu verwenden (Libraries for security-enabled client and server applications) sowie DDEV:

brew install nss
brew install ddev/ddev/ddev
mkcert -install

Die Zertifizierungsstelle wird in Firefox eingetragen und ist zu finden unter dem Namen "mkcert development CA".

TYPO3 Installation

Nach der Anleitung von https://docs.typo3.org/m/typo3/tutorial-getting-started/main/en-us/Installation/TutorialDdev.html habe ich folgende Schritte ausgeführt:

Zunächst ein Verzeichnis anlegen:

mkdir httpdocs/ rsys-t3-12-rsystemplate-bootstrap-v8-base
cd httpdocs/ rsys-t3-12-rsystemplate-bootstrap-v8-base

zu beachten ist keine Underscrores zu verwenden, da der Name dann auch für den Hostnamen verwendet wird.

Dann die eigentliche Installation

ddev config --project-type=typo3 --docroot=public --create-docroot --php-version 8.2
ddev composer create --no-install "typo3/cms-base-distribution:^12"
ddev restart
ddev exec touch public/FIRST_INSTALL
ddev launch

Port 80 Problem

Bei mir kam dann der Fehler:

Failed to start app rsys-t3-12-rsystemplate-bootstrap-v8-base to run create-project: Unable to listen on required ports, port 80 is already in use,

Klar, da läuft meine Apache. Um den Port zu ändern in der Datei .ddev/config.yaml den Eintrag ändern:

router_http_port: "8080"

und ein restart:

ddev restart
ddev launch

Dann wird im Browser das 123 Install Tool angezeigt. Die Fehlermeldung Trusted hosts pattern mismatch kann man ignorieren. Name und Password für die Datenbank findet man unter config/system/settings.php. Wenn man alles durchgeklickt hat ist die Installation fertig und funktioniert einwandfrei! Tolle Sache das DDEV! Es bietet auch einige hilfreiche Zusätzliche Module.

Zusätzliche Module bei DDEV

Phpmyadmin

Folgender Befehl öffnet phpmyadmin im Browser:

ddev launch -p

Mail

Folgender Befehl öffnet MailHog im Browser - ein Tool welches als SMTP Empfänger vorkonfiguriert ist und aussieht wie ein Webmailer. Alle versendeten Mail kommen dort an, egal an welche Adresse man Mails versendet. Praktische Sache, so versendet man nicht versehentlich an "echte" Empfänger aus irgendeiner Konfiguration.

ddev launch -m

 

TYPO3 Update mit composer

Um TYPO3 zu aktualisieren:

composer update "typo3/cms-*" --with-all-dependencies

Um auf eine spezifische Version umzustellen:

ddev composer require "typo3/cms-backend:^12.4" "typo3/cms-belog:^12.4" "typo3/cms-beuser:^12.4" "typo3/cms-core:^12.4" "typo3/cms-extbase:^12.4" "typo3/cms-extensionmanager:^12.4" "typo3/cms-filelist:^12.4" "typo3/cms-fluid:^12.4" "typo3/cms-frontend:^12.4" "typo3/cms-impexp:^12.4" "typo3/cms-info:^12.4" "typo3/cms-install:^12.4" "typo3/cms-lowlevel:^12.4" "typo3/cms-opendocs:^12.4" "typo3/cms-recycler:^12.4" "typo3/cms-rte-ckeditor:^12.4" "typo3/cms-seo:^12.4" "typo3/cms-setup:^12.4" "typo3/cms-viewpage:^12.4" "typo3/minimal:^12" --update-with-dependencies

Mittwald ELTS composer repository

composer config repositories.elts composer https://typo3.composer.mittwald.de

Oder manuell:

"repositories": [
    {"type": "composer", "url": "https://typo3.composer.mittwald.de"}
]

Aktualisieren:

composer update mirrors
composer update

Problem bei Update auf 12.4.23 mit News Meldungen

Nach dem Update von der Version 12.4.22 auf 12.4.23 gaben alle Seiten mit News Plugins den Fehler 500. Mit Aktivieren des Debugs kann man die Meldung sehen. Diese war wie folgt:

Too few arguments to function PHPStan\PhpDocParser\Lexer\Lexer::__construct(), 0 passed in /html/typo3-composer/vendor/symfony/type-info/TypeResolver/StringTypeResolver.php on line 66 and exactly 1 expected

Der Aufrufstack war wie folgt:

in /html/typo3-composer/vendor/phpstan/phpdoc-parser/src/Lexer/Lexer.php line 102
in /html/typo3-composer/vendor/symfony/type-info/TypeResolver/StringTypeResolver.php line 66

Alle Versuche sind gescheitert:

1. Downgrade

delete composer.lock
composer require typo3/cms-core:12.2.22 --update-with-all-dependencies

Fehler ist unverändert.

2. News Upgrade

composer require georgringer/news:dev-12-13

Trotz neuester Development Version der News ist der Fehler immer noch unverändert.

3. Lösung: phpdoc-parser downgrade

composer req phpstan/phpdoc-parser:1.33.0

Und alles funktioniert wieder.

Nach dem Update waren die Versionen der beiden im Aufrufstack sichtbaren Komponenten wie folgt:

symfony/type-info        v7.1.6  Extracts PHP types information.
phpstan/phpdoc-parser    2.0.0  PHPDoc parser with support for nullable, intersection and generic types

Und diese passen wohl nicht zusammen...

4. Erklärung

type-info ruft auf:

$this->lexer = new Lexer();

Aber der Lexer in phpdoc-parser/src/Lexer/Lexer.php hat folgenden Konstruktor:

public function _construct (ParserConfig $config) {
...}

Damit ist der Fehler klar - es fehlt der Parameter beim Aufruf new Lexer()!