Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen RevisionVorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
typo3:administration:update [08.11.2019 18:56] – [Optionale Änderungen] Monika Schneiderstypo3:administration:update [28.02.2024 14:08] (aktuell) – [Kopie der TYPO3-Site bei jweiland.net erstellen] Monika Schneiders
Zeile 7: Zeile 7:
   - neue Datenbank im Kundenmenü anlegen   - neue Datenbank im Kundenmenü anlegen
   - Backup der alten DB erstellen: ''%%mysqldump --opt -h HOST -u USER -p DBNAME > DATEINAME.sql%%'', um das Passwort bei Aufforderung direkt einzugeben   - Backup der alten DB erstellen: ''%%mysqldump --opt -h HOST -u USER -p DBNAME > DATEINAME.sql%%'', um das Passwort bei Aufforderung direkt einzugeben
-  - dieses in die neue DB einspielen: ''%%mysql -h 127.0.0.3 -u user -ppassword datenbankname dateiname.sql%%''+  - dieses in die neue DB einspielen: ''%%mysql -h 127.0.0.3 -u USER -p DBNAME DATEINAME.sql%%''
   - in der LocalConfiguration.php (resp. localconf.php) neue Datenbank eintragen (User, Passwort, Name)   - in der LocalConfiguration.php (resp. localconf.php) neue Datenbank eintragen (User, Passwort, Name)
   - Subdomain anlegen, die auf den neuen Ordner zeigt   - Subdomain anlegen, die auf den neuen Ordner zeigt
-  - in den Templates des kopierten TYPO3 die baseURL anpassen+  -  in der YAML-Seitenkonfiguration den Einstiegspunkt anpassen (ehem. baseURL)
  
 [[typo3:administration:kopie-per-plesk|Kopie der TYPO3-Site auf Strato vServer mit Plesk erstellen]] [[typo3:administration:kopie-per-plesk|Kopie der TYPO3-Site auf Strato vServer mit Plesk erstellen]]
 +
 +[[mysql:datenbankoperationen|Einzelne Tabellen der Datenbank kopieren]]
 +
 +
 +**[[typo3:administration:jweiland-typo3-11#update-von-typo3-115-auf-124|
 +Update von TYPO3 11.5 auf 12.4]]**
 +
 +[[typo3:administration:jweiland-typo3-11#update-von-typo3-104-auf-115|
 +Update von 10.4 auf 11.5 bei jweiland.net]]
 +====== Update von 9.5 auf 10.4 ======
 +
 +Systemvoraussetzungen: **PHP 7.2-7.4**
 +
 +  - **Extensions** aktualisieren so weit wie möglich, **Referenz-Index** aktualisieren (in der Shell z.B. mit ''php7-73LATEST-CLI typo3/sysext/core/bin/typo3 referenceindex:update''; nur prüfen: '' -c'' anhängen) und **Database analyzer** ausführen
 +  - nicht-kompatible Extensions deaktivieren
 +  - **eigene Template-Extension** deaktivieren und anpassen (s.u.)
 +  - Quellcode entpacken
 +  - Symlink bearbeiten
 +  - **index.php** aus dem entpackten Quellcode in das Projektverzeichnis kopieren und anpassen (s.u.)
 +  - **Browser-Cache** löschen
 +  - Install-Tool aktivieren und unter ''/typo3/install.php'' aufrufen
 +  - **Upgrade wizard** und **Database analyzer** komplett durchlaufen und erst dann die Template-Extension wieder aktivieren
 +
 +s. a. https://docs.typo3.org/m/typo3/guide-installation/master/en-us/Upgrade/Index.html
 +
 +[[typo3:administration:updates-all-inkl-com|TYPO3-Updates bei all-inkl.com]]
 +===== index.php anpassen =====
 +
 +<code php>
 +$classLoader = require __DIR__.'/vendor/autoload.php';
 +// wird zu:
 +$classLoader = require __DIR__.'/typo3_src/vendor/autoload.php';
 +
 +</code>
 +
 +
 +
 +===== Eigene Template-Extension =====
 +
 +Der Link zum Einbinden des statischen Templates liegt nicht mehr auf der obersten Ebene in der Datei ''ext_tables.php'', sondern in
 +''EXT-Folder/Configuration/TCA/Overrides/sys_template.php''. Dementsprechend muss im Code auch der Extension-Key angegeben werden:
 +
 +<code php>
 +\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addStaticFile($_EXTKEY, 'Configuration/TypoScript', 'NemaTemplate');
 +// wird zu:
 +\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addStaticFile('nema_template', 'Configuration/TypoScript', 'NemaTemplate');
 +
 +</code>
 +
 +===== Troubleshooting =====
 +  * Wenn die Detail-Ansicht der **News** das allseits beliebte "oops, an error occured" ausgibt, liegt es eigentlich immer an einem veralteten eigenen Template, und zwar meist an der //Condition// ''settings.detail.disqusShortname''. Wird sie gelöscht, ist alles wieder gut. Eine andere Möglichkeit ist die falsch plazierte //Condition// ''{newsItem.mediaPreviews}''.
 +  * Für ein Kategorienmenü der **News** wird nun das Feld //slug// der Kategorien verwendet. Dieses muss also i.d.R. noch befüllt werden.
 +  * Die Installation einer neuen Version der **eigenen Template-Extension** funktioniert komischerweise nur, wenn die Einstellung des Extensionmanagers ''basic.automaticInstallation = false'' ist.
 +  * Falls das **felogin** auf der temporären Domain nicht funktioniert, liegt es vielleicht daran, dass diese nicht über HTTPS aufgerufen wird.
 +
 +
 ====== Update von 8.7 auf 9.5 ====== ====== Update von 8.7 auf 9.5 ======
  
-Wie bei jedem Update starten wir mit einer **Kopie** (s.o.), überprüfen die Kompatibilität der **Extensions**, aktualisieren sie so weit wie möglich und deaktivieren sie gegebenenfalls, führen im Installtool den **Database analyzer** aus und aktualisieren den **Referenz-Index**. +Wie bei jedem Update starten wir mit einer **Kopie** (s.o.), überprüfen die Kompatibilität der **Extensions**, aktualisieren sie so weit wie möglich, [[typo3:extensions:typo3_console|aktualisieren den Referenz-Index]] und führen im Installtool den **Database analyzer** aus. Anschließend werden die nicht-kompatiblen Extensions **deaktiviert**.
  
 :!: Anforderung: Mindestens **PHP 7.2 Extended** - nicht FASTCGI! - Wenn man im Installtool, im Backend und im Frontend nur leere weiße Seiten sieht, kann das der Grund sein. :!: Anforderung: Mindestens **PHP 7.2 Extended** - nicht FASTCGI! - Wenn man im Installtool, im Backend und im Frontend nur leere weiße Seiten sieht, kann das der Grund sein.
 +
 +:!: Configuration Presets auf "Live" stellen. Sonst verschluckt sich der Upgrade Wizard an den Fehlermeldungen.
 +
 +:!: Seiten, die nicht in der URL erscheinen sollen, auf "Ordner" bzw. "Trennzeichen für Menü [199]" umstellen. Mit RealURL konnte man Seiten aus dem Pfad ausschließen; mit den "Slugs" in TYPO3 9 geht das nicht mehr bzw. man muss nachträglich [[typo3:administration:update:datenbankfeld_slug_leeren|per phpMyAdmin das Feld ''slug'' der betroffenen Seiten leeren und die Pfade neu generieren]].
  
 Dann wird der **Quellcode** entpackt und den symbolische Link zum Quellcode geändert (z.B. im Midnight Commander über Menü > File > Edit Symlink). Dann wird der **Quellcode** entpackt und den symbolische Link zum Quellcode geändert (z.B. im Midnight Commander über Menü > File > Edit Symlink).
  
 Im Installtool alle Punkte im **Upgrade-Wizard** durchgehen, auch die nicht gewünschten Änderungen auswählen, aber nicht ausführen lassen. So weiß der Wizard, dass man diese absichtlich übergangen hat. Anschließend im **Database Analyzer** die Datenbank anpassen. Dabei Tabellen deaktivierter Extensions nicht ändern. Anschließend den **Cache löschen**. Im Installtool alle Punkte im **Upgrade-Wizard** durchgehen, auch die nicht gewünschten Änderungen auswählen, aber nicht ausführen lassen. So weiß der Wizard, dass man diese absichtlich übergangen hat. Anschließend im **Database Analyzer** die Datenbank anpassen. Dabei Tabellen deaktivierter Extensions nicht ändern. Anschließend den **Cache löschen**.
 +
 +Es lohnt sich auch, einen Blick in den **Directory Status** unter Umgebung zu werfen.
  
 ===== Seitenkonfiguration ===== ===== Seitenkonfiguration =====
Zeile 27: Zeile 89:
 ... ersetzt sozusagen RealURL und baseURL. ... ersetzt sozusagen RealURL und baseURL.
  
-Im Reiter Allgemein: +Im Reiter **Allgemein**
   * Seitenbezeichner = Name des Ordners, in dem die Konfiguration gespeichert wird   * Seitenbezeichner = Name des Ordners, in dem die Konfiguration gespeichert wird
   * Einstiegspunkt = baseURL; komplette Adresse   * Einstiegspunkt = baseURL; komplette Adresse
  
  
-Im Reiter Sprachen, am Beispiel einer deutschen Seite:+Im Reiter **Sprachen**, am Beispiel einer deutschen Seite:
   * Titel: Deutsch   * Titel: Deutsch
   * Sprachschlüssel für XLF-Dateien: German   * Sprachschlüssel für XLF-Dateien: German
Zeile 39: Zeile 101:
   * Sprachkürzel nach RFC 1766/3066: de-DE   * Sprachkürzel nach RFC 1766/3066: de-DE
   * ggf. noch Flaggensymbol: Suchen nach "de"   * ggf. noch Flaggensymbol: Suchen nach "de"
 +Die Konfiguration der Sprachen im config.ts (sys_language_mode etc.) wird dadurch überflüssig.
  
-Im Reiter Fehlerbehandlung kann z.B. eine eigene 404-Seite mit dem Fehlercode verknüpft werden.+Im Reiter **Fehlerbehandlung** kann z.B. eine eigene 404-Seite mit dem Fehlercode verknüpft werden.
  
-===== Optionale Änderungen =====+Die Konfiguration wird in ''typo3conf/sites/'' gespeichert. Für die [[typo3:administration:yaml:seitenkonfiguration|Extension News]] muss sie anschließend in einem Editor von Hand erweitert werde. Siehe auch [[https://jweiland.net/video-anleitungen/typo3/typo3-projekte-verwalten/upgrade-von-typo3-8-lts-auf-9-lts.html#c6443|routeEnhancers]].
  
-Die **Dateiendungen** für TypoScript und TSconfig sollten im Hinblick auf weitere Updates an den neuen Standard angepasst werden.+===== Troubleshooting ===== 
 + 
 +==== Leere Typoscript-Objekte ==== 
 + 
 +Leere Typoscript-Objekte führen zu einem Fehler. Abhilfe: Folgenden Code einfügen, wo das leere Objekt ausgegeben wird. 
 + 
 +<code typoscript> 
 + lib.searchfield = TEXT 
 + lib.searchfield.value > 
 +</code> 
 + 
 +=== Fehlerhafte Pfadangaben === 
 + 
 +Auch wenn im Fluid-Template Typoscript-Objekte aufgerufen werden, die es nicht gibt oder zu denen der Pfad nicht stimmt, werden die Templates nicht gerendert. 
 + 
 +=== Auskommentierte Typoscript-Elemente im Fluidtemplate === 
 + 
 +Auch wenn ein cObject in einem auskommentierten Teil des Templates steht, scheint TYPO3 9 zu versuchen, dieses zu rendern. Fehlt es im Setup, wird im Frontend nur eine leere Seite mit dem allseits beliebten "Oops, an error occurred" ausgegeben. 
 +<code html> 
 +<!-- div> <f:cObject typoscriptObjectPath="lib.notfoundcode"/> </div--> 
 +</code> 
 + 
 +==== index.php ==== 
 + 
 +Bei manchen Updates muss hier schon die Datei wie unter [[update#indexphp]] beschrieben angepasst werden. 
 +===== Rechte der BE-User ===== 
 + 
 +Redakteure müssen Zugriff auf das URL-Segment haben, sonst bleibt das Feld leer, wenn der Redakteur eine neue Seite anlegt. 
 + 
 +Zugriffsliste -> Erlaubte Ausschlussfelder -> Seite -> URL-Segment (slug) 
 + 
 +Das gilt natürlich auch für Extensions, also z.B. bei [news]:  
 + 
 +Zugriffsliste -> Erlaubte Ausschlussfelder -> Artikel -> Sprechende URL Pfadabschnitt (path_segment) 
 + 
 +===== Neue Syntax für TypoScript Conditions ===== 
 + 
 +TypoScript Conditions mit der [[https://symfony.com/doc/current/components/expression_language/syntax.html|Symfony Expression Language]],  
 +vgl. [[https://docs.typo3.org/m/typo3/reference-typoscript/master/en-us/Conditions/Index.html|Typoscript Reference]], [[https://www.clickstorm.de/blog/typoscript-conditions-symfony-expression-language/|TypoScript Conditions mit der Symfony Expression Language]], [[https://www.nitsan.in/de/blog/all-you-need-to-know-about-typoscript-conditions-with-symfony-expression-language/|Vorher/Nachher]] und [[https://wiki.sebkln.de/doku.php?id=typo3:about:conditions#conditions_mit_symfony_expression_language_ab_typo3_94|TypoScript-Condition Cheatsheet]] 
 + 
 +Eine bestimmte Seite: ''[globalVar = TSFE:id = 123]'' -> ''%%[ page["uid"] == 123 ]%%''\\ 
 +Eine bestimmte Seite und ihre Unterseiten: ''[PIDinRootline = 123]'' -> ''[ 123 in tree.rootLineIds ]''\\ 
 +Seite auf einer bestimmten Ebene: ''[treeLevel = 0]''  -> ''[tree.level == 0]''\\ 
 +Login eines beliebigen Benutzers: ''[loginUser = *]'' -> ''[ loginUser('*') ]''\\ 
 +Eine Seite im Bereich 10-20: ''%%[ page["uid"] in 10..20 ]%%'' 
 + 
 +Beispiel: 
 +<code typoscript> 
 +[globalVar = TSFE:id = 1] || [globalVar = TSFE:id = 2] 
 +# ... 
 +[global] 
 +</code> 
 +wird zu 
 +<code typoscript> 
 +[ page["uid"] == 1 || page["uid"] == 2 ] 
 +# ... 
 +[END] 
 +</code> 
 + 
 + 
 +==== Seitensprache ==== 
 +Mit TYPO3 9.4 entfällt der L-Parameter, daher wird die Site-Configuration abgefragt: Aus 
 +<code typoscript> 
 + [globalVar = GP:L = 1] 
 +</code> 
 +wird 
 +<code typoscript> 
 + [siteLanguage("languageId") == "1"
 + 
 + // oder auch 
 + [siteLanguage("title") == "Deutsch"
 +</code> 
 + 
 + 
 +Beispiel: Sprache im ''page.typoscript'' abfragen und im HTML-Tag anpassen: 
 +<code typoscript> 
 +page.config.htmlTag_setParams = class="no-js" lang="de"  
 +[globalVar = GP:L = 1] 
 + page.config.htmlTag_setParams = class="no-js" lang="en"  
 +[global] 
 +</code> 
 +wird zu 
 +<code typoscript> 
 +page.config.htmlTag_setParams = class="no-js" lang="de" 
 +[siteLanguage("languageId") == "1"
 + page.config.htmlTag_setParams = class="no-js" lang="en" 
 +[END] 
 +</code> 
 + 
 + 
 +===== Optionale Änderungen (für TYPO3 10) ===== 
 + 
 + 
 +Die **Dateiendungen** für TypoScript und TSconfig werden vereinheitlicht:
  
 TypoScript ''.ts''-> ''.typoscript''\\ TypoScript ''.ts''-> ''.typoscript''\\
 TSconfig ''.txt'' -> ''.tsconfig'' TSconfig ''.txt'' -> ''.tsconfig''
  
-Entsprechend muss der Pfad zu den inkludierten Dateien im Setup angepasst werden. Auch hier ist die Syntax einfacher geworden:+Entsprechend muss der Pfad zu den inkludierten Dateien in der **ext_localconf.php** und im **Setup** angepasst werden.  
 + 
 +Auch hier ist die Syntax einfacher geworden:
  
 <code typoscript> <code typoscript>
 @import "EXT:nema_template/Configuration/TypoScript/*.typoscript" @import "EXT:nema_template/Configuration/TypoScript/*.typoscript"
 </code> </code>
-====== Update von 7.6 auf 8.7.20 ======+====== Update von 7.6 auf 8.7 ======
 ... geht eigentlich genauso wie das [[#update-von-62-auf-76|Update von 6.2 auf 7.6]]. Allerdings ist die System-Extension **Form** komplett neu. Und für veraltete Templates sind manuelle Anpassungen notwendig. ... geht eigentlich genauso wie das [[#update-von-62-auf-76|Update von 6.2 auf 7.6]]. Allerdings ist die System-Extension **Form** komplett neu. Und für veraltete Templates sind manuelle Anpassungen notwendig.
  
Zeile 61: Zeile 219:
   * Die meisten System-Extensions müssen nach dem Update von Hand aktiviert werden.   * Die meisten System-Extensions müssen nach dem Update von Hand aktiviert werden.
   * Deshalb muss man auch vor dem Update in der "all configuration" **[BE][loginSecurityLevel]** temporär von "rsa" auf "normal" setzen. Sonst klappt das BE-Login nicht.   * Deshalb muss man auch vor dem Update in der "all configuration" **[BE][loginSecurityLevel]** temporär von "rsa" auf "normal" setzen. Sonst klappt das BE-Login nicht.
 +  * **index.php** nicht austauschen.
 +  * Vor dem Aufruf des Install-Tools den Ordner **typo3temp** leeren.
 +  * Ext. **news** trotz Kompatibilität vor dem Update deaktivieren. Nach dem Durchlaufen des Upgrade-Wizard und dem Aktivieren der Extension muss man den Task **Row updater: Scan for old "<link>" syntax in richtext and text fields and update to '<a href>'** noch mal auf undone setzen und den Wizard erneut ausführen. Ob das geklappt hat, kann man in phpMyAdmin mit dem Befehl ''SELECT * FROM `tx_news_domain_model_news` WHERE `bodytext` LIKE '%<link%' '' überprüfen. Was übrig bleibt, sind tote Links.
 +  * PHP von FastCGI auf **EXTENDED** umstellen.
 +
 +===== Troubleshooting =====
 +In TYPO3 8 können Extensions einfach deaktiviert werden, indem man den entsprechenden Eintrag in der PackageStates.php löscht.
  
  
Zeile 82: Zeile 247:
  
 ===== CSS styled content ===== ===== CSS styled content =====
-Die Klasse ''.csc-default'' gibt es nicht mehr. Sie muss im CSS entfernt oder z.B. durh ''.csc-frame'' ersetzt werden.+Die Klasse ''.csc-default'' gibt es nicht mehr. Sie muss im CSS entfernt oder z.B. durch ''.csc-frame'' ersetzt werden.
  
 ''imageColumnStdWrap'' muss durch ''imageStdWrap'' ersetzt werden. ''imageColumnStdWrap'' muss durch ''imageStdWrap'' ersetzt werden.
Zeile 131: Zeile 296:
 ln -s ../typo3_src-N.N.NN typo3_src </code>  ln -s ../typo3_src-N.N.NN typo3_src </code> 
   - index.php aus dem Quellcode- in das Projektverzeichnis kopieren   - index.php aus dem Quellcode- in das Projektverzeichnis kopieren
-  - **Install-Tool** freischalten und im Browser unter ''DOMAIN/typo3/install/index.php'' aufrufen. Falls es eine Fehlermeldung bzgl. der SymLinks gibt ("Calculated absolute path to tslib directory does not exist."), muss man das PHP von FastCGI auf EXTENDED umstellen.+  - **Install-Tool** freischalten und im Browser unter ''DOMAIN/typo3/install/index.php'' aufrufen. Falls es eine Fehlermeldung bzgl. der SymLinks gibt ("Calculated absolute path to tslib directory does not exist."), muss man das PHP von FastCGI auf  :!: EXTENDED umstellen.
   - ggf. "Folder Structure" korrigieren   - ggf. "Folder Structure" korrigieren
   - "Upgrade Wizard" aufrufen (bei größeren Versionsänderungen); s.a. [[https://jweiland.net/video-anleitungen/typo3/typo3-projekte-verwalten/upgrade-typo3-62-auf-7.html]]   - "Upgrade Wizard" aufrufen (bei größeren Versionsänderungen); s.a. [[https://jweiland.net/video-anleitungen/typo3/typo3-projekte-verwalten/upgrade-typo3-62-auf-7.html]]
Zeile 180: Zeile 345:
   - **Immer** an einer Kopie der Seite arbeiten, da mit hoher Wahrscheinlichkeit irgendetwas zumindest zeitweise nicht funktioniert.   - **Immer** an einer Kopie der Seite arbeiten, da mit hoher Wahrscheinlichkeit irgendetwas zumindest zeitweise nicht funktioniert.
   - PHP-Version überprüfen (mindesten 5.4) und im PHP.INI-Editor max_execution_time = "240"; post_max_size = "10M"; upload_max_filesize = "10M" setzen, weil sich TYPO3 6 sonst beschwert.   - PHP-Version überprüfen (mindesten 5.4) und im PHP.INI-Editor max_execution_time = "240"; post_max_size = "10M"; upload_max_filesize = "10M" setzen, weil sich TYPO3 6 sonst beschwert.
 +  - prüfen, ob die Passwörter verschlüsselt sind, sonst per Scheduler Task nachholen, vgl. [[https://wwagner.net/typo3/upgrade-typo3-4-auf-9-lts-vorsicht-passwoerter/]]
   - Extensions überprüfen und, falls möglich, updaten auf die neueste Version, die noch mit 4.5 kompatibel ist. Andere Erweiterungen am besten deinstallieren.   - Extensions überprüfen und, falls möglich, updaten auf die neueste Version, die noch mit 4.5 kompatibel ist. Andere Erweiterungen am besten deinstallieren.
   - optional: Verzeichnis ''typo3temp'' leeren   - optional: Verzeichnis ''typo3temp'' leeren