Blog
Update auf TYPO3 6.2 LTS

TYPO3 6.2 LTS - Update und TippsMit allerlei Releasepartys rund um den Erdball wurde am 25. März die Ära der neuen Long Term Support (LTS) – Version 6.2 von TYPO3 eingeläutet. Diese löst damit die im Januar 2011 erschienene Version 4.5 als LTS, welche aktuell bei 4.5.37 steht und noch bis März 2015 mit Updates bedacht wird, ab. Damit soll der Update-Druck gerade von umfangreichen Installationen genommen werden, indem genügend Zeit für Planung und Durchführung des TYPO3-Updates vorhanden ist. Idealerweise nutzt man den großen Sprung auch gleich für einen grundlegenden Website-Relaunch.

Ich hatte im Projektalltag zwar schon in die Beta-Versionen hineingeschnuppert, wollte aber mit dem genaueren Anschauen bis zum endgültigen Release (der ja u.a. aus Qualitäts-, Performance- und Stabilitätsgründen im November 2013 nochmals um reichliche fünf Monate verschoben wurde) abwarten.

Nachdem ich die 6.2 in den letzten Wochen und Monaten nun durchgespielt habe und etliche Installationen geupdatet und Extensions auf die neue Version angepasst habe, hier nun meine Bemerkungen dazu. Diese sind ausdrücklich auszugsweise und können die Mächtigkeit dieses Updates natürlich nicht im geringsten wiedergeben.

Grundlegende Änderungen für Integratoren:

  • Mindestanforderungen ans System sind nun PHP 5.3.7 bzw. MySQL 5.1.x – also leicht gestiegen hinsichtlich TYPO3 4.5 oder 4.7. Das könnte ein netter Stolperstein bei einem Upgrade sein und sollte vorab pro forma z.B. per phpinfo()-Skript oder per Install-Tool (System Environment > PHP Info) überprüft werden.
  • Nachdem in der LTS 4.5 bereits der Ordner „misc“ weggefallen ist, wurde nun auch der Ordner „t3lib“ eingespart. Somit besteht der TYPO3-Kern also nur noch aus der index.php sowie dem Ordner „typo3“.
  • Auch gibt es nun nur noch die reine Source zum Download – das Blank- und Dummy-Package werden nicht mehr zur Verfügung gestellt. Dafür werden beim ersten Aufruf des Installtools alle nötigen Ordner (z.B. typo3temp/, typo3conf/, uploads/) automatisch angelegt, falls diese noch nicht existieren.
  • die Liste der aktivierten Extensions steht nun nicht mehr in „extListArray“ in der LocalConfiguration.php (bzw. bei < 6.0 in $TYPO3_CONF_VARS[‚EXT‘][‚extList‘] in der localconf.php), sondern die Extension werden bereits nach dem Package Management von TYPO3 Flow in der PackageStates.php gespeichert und können dort über ’state‘ => ‚inactive‘ deaktiviert werden.

Installations-Tool

Dem grundlegenden Install-Tool wurde ein Rewrite spendiert. Es ist zwar noch als solches erkennbar, doch auch die Struktur wurde aufgeräumt und die verschiedenen administrativen Belange teilweise neu geclustert.

  • Neben der Datei „typo3conf/ENABLE_INSTALL_TOOL“ beim grundsätzlichen Aufruf muss beim ersten Aufruf nun auch eine (auch leere) Datei „FIRST_INSTALL“ im Hauptordner existieren.
  • Important actions beinhaltet
    • den Database Analyzer,
    • die Änderungen des Installtool-Passworts, des Titels der Installation, des Encryption-Keys,
    • die Maske um Backend-User anzulegen,
    • sowie ganz neu die Möglichkeit
      • eines TYPO3-Core-Updates (nur sog. Minor Releases),
      • korrupte (also fehlerwerfende) Extensions ausfindig zu machen und zu deaktivieren und
      • den TYPO3-Cache grundlegend zu leeren
  • Folder structure beinhaltet die bisherige Ordnerüberprüfung (Vorhandensein und korrekte Rechte) aus der Basic Configuration mit einer genaueren Überprüfung sowie der Möglichkeit, vorhandene Missstände per Knopfdruck zu beheben
  • System environment check enthält nun die PHP-Systemparameter aus der „Basic Configuration“ und auch den bisherigen Punkt phpinfo().
    Hier wird auch vor konkreten unzureichenden PHP-Einstellungen oder entsprechenden Unstimmigkeiten (z.B. abweichende Upload-Limits) gewarnt

Distributionen

Bei der Erstinstallation wird die Option angeboten, dass man die Liste der Distributionen mit herunterladen lassen kann. Zu finden sind diese dann im Erweiterungsmanager. Mit dieser Möglichkeit sollen Out-of-the-Box-Websites möglich sein. Näher befasst habe ich mich damit (noch) nicht, da die von uns verabreichten TYPO3-Websites für Kunden oder eigene Projekte stets individuell sind.

FAL

Eine der größten und besten Neuerungen ist für mich die Einführung des File Abstraction Layers (FAL). Damit wird dem Wildwuchs von hochgeladenen doppelt und x-fach identischen Dateien ein Ende gesetzt und jede Datei ist im Filesystem nur noch einmal vorhanden. Die Abstraktion sowie Zuordnung zum Inhalt erfolgt dann über die Datenbank.

Mit dieser Verbesserung entfallen auch unsägliche Erklärungsversuche in TYPO3-Schulungen, bei welchen den armen Redakteuren zugemutet wurde, Alternativtexte pro Bild zeilengetrennt in ein Textfeld eingeben zu müssen. Nun werden die Meta-Angaben direkt beim Bild vorgenommen.

Backend

Das TYPO3-Backend – also das, womit der Kunde oder Redakteur beim Einpflegen der Inhalte konfrontiert wird – durfte eine optische Aufwertung erfahren. Gerade auch für Laien und in Bezug zu anderen Systemen muss ein CMS einem Vergleich hinsichtlich Nutzerfreundlichkeit und ansprechender Optik Stand halten um entsprechende Akzeptanz zu finden. In Punkto der Performancesteigerung wurde ja bereits in den letzten Versionen einiges unternommen.

Vorschau

Auch das Modul Anzeigen (View) wurde aufgewertet. Es wird hier nicht mehr nur eine schnöde Vorschau der Website direkt aus dem Backend angeboten, sondern man kann auch – ähnlich den Webentwickler-Tools im Firefox – Ausgabegröße und -medium anpassen. So kann man besonders Responsive Designs testen bzw. sich anschauen, wie die Website in verschiedenen definierten Größen aussieht ohne selbst den Browser verkleinern zu müssen. Selbstverständlich können die zur Verfügung stehenden Größen auch angepasst werden

Extensions in TYPO3 6.2

Mit der in TYPO3 6.0 eingeführten Nutzung von PHP-Namespaces für alle Kernklassen wird deren Nutzung ab 6.2 bindend. Daher funktionieren etliche Extensions (inklusive der selbst geschriebenen Extbase-Extensions) nicht mehr und müssen angepasst werden. Viele Extensionentwickler haben ihre Werke bereits für die 6.2 angepasst und ins TER geladen.

Ein paar Tipps noch zur Anpassung der eigenen Extensions:

  • Wenn sich Änderungen nicht auswirken, sollte der allgemeine Cache geleert werden und im Zweifelsfall der Ordner typo3temp/ geleert (am besten über die Variante im Installtool). Wenn die Extension weiterhin störrisch bleibt, hat mir auch schon ein Deinstallieren und Neuinstallieren der Extension geholfen. Im Folgenden ein paar signifikante Code-Schnipsel zum Einstieg in die Anpassung der eigenen Extensions für TYPO3 6.2:
  • Controller:
    namespace [Vendor]\[ExtensionCamelCase]\Controller;
    class FooController extends \TYPO3\CMS\Extbase\Mvc\Controller\ActionController {
    /**
    * fooRepository
    *
    * @var [Vendor]\[ExtensionCamelCase]\Domain\Repository\FooRepository
    * @inject
    */
    protected $fooRepository;
  • Model:
    namespace [Vendor]\[ExtensionCamelCase]\Domain\Model;
    class Foo extends \TYPO3\CMS\Extbase\DomainObject\AbstractEntity {
  • Repository:
    namespace [Vendor]\[ExtensionCamelCase]\Domain\Repository;
    class FooRepository extends \TYPO3\CMS\Extbase\Persistence\Repository {
  • Neben den Controllern, Models und Repositories müssen u.a. auf jeden Fall auch die ext_localconf.php und die ext_tables.php angepasst werden. Statt Tx_Extbase_Utility_Extension:: nutzt man hier nun \TYPO3\CMS\Extbase\Utility\ExtensionUtility::

Fazit:

TYPO3 6.2 ist ein würdiger Nachfolger der LTS 4.5 und durch die vielen Verbesserungen und Verschönerungen ein wichtiger Schritt in Richtung Zukunftsfähigkeit von TYPO3. Die vielen fleißigen Hände und smarten Gehirne, welche daran gearbeitet haben, können stolz auf sich sein :)

Anhang: Beliebte Fehler

  • #1317178604: No file found for given UID.
    Damit will uns das neue TYPO3 sagen, dass es die Datei mit der ID sh. Ablaufprotokoll nicht findet. Zunächst sollte hier überprüft werden, ob nach einem Update (auch von der 6.1) die Datenbankstruktur entsprechend (per Install-Tool) geupdatet wurde, sonst wirft die dahinterliegende SQL-Query natürlich einen Fehler.
  • #1289386765: Could not analyse class:[..]Controller maybe not loaded or no autoloader
    Die Namespaces der befehlermeldeten Extension stimmen nicht. Passen Sie diese an oder bitten Sie den Extensionentwickler, diese für TYPO3 6.2 anzupassen.
  • Fatal error: Call to undefined method TYPO3\CMS\Extbase\Persistence\Generic\Typo3QuerySettings::setRespectEnableFields()
    Die Query-Methode heißt nun setEnableFieldsToBeIgnored() und muss ein Array mit den gewünschten zu ignorierenden Feldern der Tabelle beinhalten.
  • Error while fetching permissions for [..]
    In der Dateiliste oder beim Hinzufügen eines Bildes zu einem Inhaltselement.
    Ursache: Es sieht danach aus, als ob ein oder der Dateispeicher nicht erreichbar ist. Hier muss der Fehler nach folgenden Kriterien gesucht werden:
    Ist ein Dateispeicher angelegt?
    Stimmt der „Pfad zur Basis“ mit dem reellen Ordner (per Standard fileadmin) überein?
    Ist der Dateispeicher online? (per Häkchen im Access-Reiter)
    Stimmen die Ordnerrechte des  Dateispeichers? (im Installtool unter „Folder structure“ prüfen und ggf. dort bzw. direkt auf dem Server korrieren)
    Wenn alles OK scheint und es trotzdem noch nicht funktioniert: Cache leeren (über Installtool > Important Actions > Clear all cache) und ggf. das gesamte Backend nochmal neu laden bzw. neu einloggen.
  • You are trying to use a method on an Inaccssible Folder / Please choose a FAL mount from above first
    Leider noch keine Lösung gefunden – trotz angelegtem FAL mount und augenscheinlich keinen Fehlern in den Ordnerrechten und der „Folder structure“
  • You are not allowed to access the given folder
    Wenn man als Benutzer eingeloggt ist und im Modul Dateiliste einen Ordner auswählt.
    Mögliche Lösung: In der Benutzergruppe im Reiter „Freigaben und Arbeitsumgebungen“ ist das Häkchen „Live bearbeiten (Online)“ nicht gesetzt
  • Fatal error: Uncaught exception ‚RuntimeException‘ with message ‚Could not acquire lock for ClassLoader cache creation
    Extensions deaktivieren (falls bereits LocalConfiguration.php vorhanden, dann in der PackageStates.php die „state“-Werte Extension für Extension auf „inactive“ setzen. Ansonsten in der localconf.php unter $TYPO3_CONF_VARS[‚EXT‘][‚extList‘] bzw. $TYPO3_CONF_VARS[‚EXT‘][‚extList_FE‘] alle zusätzlichen Extensions entfernen). Anschließend die temporären Dateien (typo3conf/temp_* bzw. typo3temp/Cache/) entfernen
  • Fatal error: Class ‚TYPO3\CMS\Extbase\Object\Container\Container‘ not found in ..
    ?
  • Fatal error: Uncaught exception ‚RuntimeException‘ with message ‚Could not acquire lock for ClassLoader cache creation
    Hier ist eine häufige Ursache, dass der zugeteilte Festplattenplatz auf dem Server einfach voll ist. Man sollte bei seinem Hoster in Erfahrung bringen, ob das so ist und wie man mehr Platz hinzubuchen kann. Ein paar hundert MB (z.B. ein halbes GB) sollten eigentlich reichen. Je nach Website und Nutzung des TYPO3 können es selbstverständlich auch mehr sein.
  • Fatal error: Call to undefined method TYPO3\CMS\Core\Database\DatabaseConnection::initialize() in../typo3_src-6.2.9/typo3/sysext/install/Classes/Controller/Action/Step/DatabaseConnect.php on line 285 (oder auch in typo3_src-6.2.9/typo3/sysext/core/Classes/Core/Bootstrap.php on line 797):
    Das kann ein sehr störrischer Fehler sein. Tritt dieser nach einem Update von 4.x auf 6.x auf, sollte man zunächst alle Caches leeren. Also: alles innerhalb von typo3temp/ löschen und auch ggf. die temp_*-Dateien in typo3conf/. Sollte selbst das nicht helfen, kann die Ursache selbst noch am Browsercache liegen, der weiterhin die Fehlermeldung zurückgibt (HTTP-Status 304 Not Modified). Also auch noch diesen leeren (im Firefox: Neueste Chronik löschen > Cache).
  • Weiße Seite
    Hier werden sämtliche Fehlermeldungen unterdrückt und der Nutzer im Dunkeln (bzw. Hellen) gelassen. Um den Fehler zu finden schaltet man einfach im Installtool den Wert [SYS][displayErrors] auf 1 (in Produktivumgebungen auch gern auch auf 2 mit entsprechender [SYS][devIPmask]-Angabe) oder begibt sich ins Error-Log des Servers. Ansonsten bleibt nur, die Tipps der vorherigen Punkte durchzuarbeiten (insbesondere den, die Extensions zu deaktivieren und das typo3temp/-Verzeichnis zu leeren).
  1. Wolfgang Wagner sagte am :

    Bei der „Weißen Seite“ reicht es im Allgemeinen aus, im Install-Tool im Bereich „All Configuration“ den Parameter [SYS][displayErrors] = 1 zu setzen. Dann sieht man die Fehlermeldungen und kann ensprechend reagieren.

    Grüße
    Wolfgang

    • Stefan Maischner sagte am :

      Hey Wolfgang. Vielen Dank für deine Ergänzung. Sozusagen ein Klassiker :) Habe den Passus nun erweitert.
      Zu meiner Entschuldigung muss ich gestehen, dass der Beitrag nun schon Monate auf Freischaltung schlummerte, ich ihn heute an einigen Stellen ergänzt und den Teil der Fehlermeldungen nur überflogen hatte ;)
      Schönen Gruß, Stefan

  2. Tobias Gaertner sagte am :

    Hallo Stefan,

    sehr schöne, übersichtliche Zusammenfassung.
    Erwähnenswert finde ich noch, dass ein Umschreiben der Extensions auf Namespace nicht zwingend erforderlich ist, um die Extension luffähig zu bekommen. In Hinsicht auf folgende PHP-Versionen sollte man es aber dennoch tun.

    Einen guten Eindruck, was man in seiner Extension alles anpassen muss, bekommt man, wenn man die Extension „LTS to LTS smooth migration report [smoothmigration]“ auf dem vorhandenen System installiert und die Tests laufen lässt.

    Viele Grüße
    Tobi

    • Stefan Maischner sagte am :

      Moin Tobi.

      Interessanter Punkt. Ich hatte bei meinen Klassen mit „extends Tx_Extbase_Mvc_Controller_ActionController“ zumindest einen entsprechenden Fehler bekommen. Nach der Umstellung auf „extends \TYPO3\CMS\Extbase\Mvc\Controller\ActionController“ etc. klappt es. Auch wenn es eventuell noch andere Lösungen dafür geben mag – so ist es wie du sagst aber auf jeden Fall um Längen bequemer, sauberer und zukunftssicherer :)

      Die smoothmigration ist mir natürlich auch über den Weg gelaufen, hatte ich mir aber noch nicht im Detail angesehen. Da ich sowieso überall reinschauen muss bei einem Update, habe ich das bisher ohne geschafft. Aber als schnelles Checkwerkzeug ist das sicher eine gute Unterstützung. Danke!

      Grüße zurück!

E-Mail-Adresse wird nicht veröffentlicht. Alle Felder sind Pflichtfelder.