Die 20 häufigsten TYPO3-Fehler (und wie man sie behebt)

Egal, ob Sie ein Anfänger oder ein erfahrener TYPO3-Entwickler sind, es ist immer gut, Ihre Fähigkeiten im Umgang mit TYPO3-Fehlern und der Fehlersuche zu verbessern, um qualitativ hochwertige und produktive Arbeit zu leisten. Hier sind einige Tipps, Tricks und Tools zum Umgang mit TYPO3-Fehlern.

Die 20 häufigsten TYPO3-Fehler (und wie man sie behebt)

FYI. This blog is translated by machine. Please ignore any spelling and grammar errors; sorry for such inconvenience. We appreciate your understanding and support.

Egal, ob Sie Anfänger oder erfahrener TYPO3-Entwickler sind, es ist immer gut, Ihre TYPO3-Fehler- und Debugging-Fähigkeiten zu verbessern, um qualitativ hochwertige und produktive Arbeit zu erhalten. Hier sind einige Tipps, Tricks und Tools für den Umgang mit TYPO3-Fehlern.

Fehler in TYPO3, die entweder vom System oder von Menschen verursacht wurden. Es ist manchmal schwierig herauszufinden, was, wo und wie solche TYPO3-Fehler behoben werden können. Stellen Sie sich vor, die TYPO3-Site Ihres Kunden stoppt plötzlich mit "Ups und ein Fehler ist aufgetreten", einer der berühmten TYPO3-Fehlermeldungen. Wenn Sie ein wenig Erfahrung haben, wie die TYPO3-Fehlerbehandlung funktioniert, dann werden Sie in der Lage sein, diese problemlos zu beheben.

In diesem Blog-Artikel möchte ich Tipps, Tricks und Tools zur Fehlersuche in TYPO3 für Anfänger bis hin zu fortgeschrittenen TYPO3-Anwendern und -Entwicklern schreiben.

Software wird von Menschen geschrieben und hat daher Bugs & Fehler. - John Jacobs

Bevor Sie mit der TYPO3-Entwicklung beginnen, stellen Sie sicher, dass der TYPO3-Anzeigefehler wie unten beschrieben aktiviert ist.

// typo3conf/LocalConfiguration.php

// Do not display any PHP error messages.
$TYPO3_CONF_VARS['SYS']['displayErrors'] = '0'; 

// Display error messages with the registered error handler
$TYPO3_CONF_VARS['SYS']['displayErrors'] = '1'; 

// Default setting. If devIPmask matches the users IP address
$TYPO3_CONF_VARS['SYS']['displayErrors'] = '-1';

Bei der modernen TYPO3-Entwicklung konzentrieren sich die Entwickler mehr auf das CI/CD-Entwicklungsmodell. Sie werden also durch die Konfiguration mehrerer TYPO3-Umgebungen immer auf einer einzigen TYPO3-Instanz arbeiten.

Basierend auf Ihrer TYPO3-Umgebung, wie z.B. der lokalen Entwicklung, dem Staging-Server und der produktiven TYPO3-Live-Site, sollten Sie sich überlegen, wie Sie am besten mit TYPO3-Fehlern umgehen.

Schritt 1. Erstellen Sie eine TYPO3_Context-Server-Variable mit SetEnv

SetEnv TYPO3_CONTEXT Development

Schritt 2. Bereiten Sie die TYPO3-Umgebung für jeden TYPO3_CONTEXT vor.

# Set context with mod_rewrite
# Rules to set ApplicationContext based on hostname
RewriteCond %{HTTP_HOST} ^dev\.example\.com$
RewriteRule .? - [E=TYPO3_CONTEXT:Development]

RewriteCond %{HTTP_HOST} ^www\.example\.com$
RewriteRule .? - [E=TYPO3_CONTEXT:Production]

https://usetypo3.com/fileadmin/content/06_application_context/application-information.jpg 
Tipps: Für CLI-basierte Anwendungen können Sie TYPO3_CONTEXT einfach konfigurieren

export TYPO3_CONTEXT=Development
env | grep TYPO3_CONTEXT
TYPO3_CONTEXT=Development ./typo3/cli_dispatch.phpsh

Schritt 3. Konfigurieren Sie die TYPO3-Fehlerbehandlung für jede TYPO3-Kontextumgebung. Erstellen Sie /typo3conf/AdditionalConfiguration.php

<?php
// typo3conf/AdditionalConfiguration.php

// Let's find out TYPO3_CONTEXT
switch (\TYPO3\CMS\Core\Utility\GeneralUtility::getApplicationContext()) {
    
    // Error Handeling for Production or Staging server
    case 'Production':
        $GLOBALS['TYPO3_CONF_VARS']['SYS'] => array(
            'displayErrors' => '0',
            'devIPmask' => '',
            'errorHandler' => '',
            'debugExceptionHandler' => '',
            'productionExceptionHandler' => '',
            'syslogErrorReporting' => '0',
            'belogErrorReporting' => '0',
        );

    // Error Handeling for Local Server
    default:
        $GLOBALS['TYPO3_CONF_VARS']['SYS'] => array(
            'displayErrors' => '1',
            'devIPmask' => '*',
            'errorHandler' => 'TYPO3\\CMS\\Core\\Error\\ErrorHandler',
            'errorHandlerErrors' => E_ALL ^ E_NOTICE,
            'exceptionalErrors' => E_ALL ^ E_NOTICE ^ E_WARNING ^ E_USER_ERROR ^ E_USER_NOTICE ^ E_USER_WARNING,
            'debugExceptionHandler' => 'TYPO3\\CMS\\Core\\Error\\DebugExceptionHandler',
            'productionExceptionHandler' => 'TYPO3\\CMS\\Core\\Error\\DebugExceptionHandler',
        );
}

Schritt 4. PHP- & TypoScript-Einstellungen konfigurieren

Für die lokale TYPO3-Entwicklung

// In .htaccess or php.ini
php_flag display_errors on
php_flag log_errors on
php_value error_log /path/to/php_error.log

// In TypoScript Setup
config.contentObjectExceptionHandler = 0

Für Live-Produktion TYPO3-Umgebung

// In .htaccess or php.ini
php_flag display_errors off
php_flag log_errors on
php_value error_log /path/to/php_error.log

// In TypoScript Setup
config.contentObjectExceptionHandler = 1

Sie können das TYPO3-Fehlerprotokoll auf verschiedene Arten überprüfen, wie unten beschrieben.

Option #1

Webserver-Protokolldateien für allgemeine Probleme (z.B. /var/log/apache2 auf einem Linux-basierten System)

Option #2

TYPO3-Administrationsprotokoll in SYSTEM > Protokoll (im Backend)

Option #3

TYPO3-Protokolle, die vom Logging-Framework in typo3temp/var/log geschrieben werden

Seit langem gibt es mit TYPO3 6.0 den ApplicationContext in TYPO3, der es Ihnen erlaubt, TYPO3 in den verschiedenen Modi wie Produktiv, Entwicklung oder Test zu betreiben. 

TYPO3 läuft in einem Produktiv-Modus, in dem keine Bedingungsfaktoren eingestellt sind. In diesem Modus werden den Website-Besuchern keine Sonderfälle vorgegeben, da Website-Hacker in diesen angeblichen Backtraces Daten über das Framework ausspähen können. Der ContentObjectExceptionHandler wurde integriert, um diesen nützlichen Informationen vorzubeugen. Wenn bei der Behandlung von Inhaltselementen eine Exception geworfen wird, und dies schließt jede einzelne Front-Extension mit ein, holt sich dieser ExceptionHandler diese und meldet nur mit den Worten

Hoppla, ein Fehler ist aufgetreten, Hoppla, mit dem Fehler kann ich nichts anfangen ... aber was tun?

Keine Panik - so schlimm ist es nicht! Es gibt einen einfachen Weg, die Fehlermeldung zu erhalten, wie zum Beispiel "Hoppla, ein Fehler ist aufgetreten! Code: 20170425202550255025e4885c "zum Debuggen. Die Vorgehensweise ist bei TYPO3 9.5.x immer noch die gleiche.

Lösung #1 Überprüfen Sie die Systemprotokolldateien

Eine Möglichkeit ist, die Protokolldatei zu öffnen und nach dem Fehlercode zu suchen. Er sieht in etwa so aus:

// You can find the file at:
typo3temp/logs/typo3_[abc123].log

// or with newer TYPO3 versions under:
typo3temp/var/logs/typo3_[abc123].log

Hier können wir nachlesen, was es ist, aber diese Methode ist nicht besonders bequem.

Lösung #2 TYPO3-Anzeigefehler aktivieren

// TypoScript Setup
config.contentObjectExceptionHandler = 0

Der ContentObjectExceptionHandler kann mittels TypoScript sehr individuell konfiguriert werden. Der ExceptionHandler kann auch im Produktivmodus für die Zeit der Entwicklung komplett abgeschaltet werden.

Wenn Sie im Installationstool ZUSÄTZLICH das "Configuration Preset" auf "Debug" setzen, dann erscheinen im Frontend wieder die bekannten Backtraces:

TYPO3 <= v8.x

TYPO3 >= 9.x

Für den unwahrscheinlichen Fall, dass Sie den ExceptionHandler auf 1 setzen (oder die Einstellung ganz zurücksetzen), aktivieren Sie die Standardeinstellung, und "Hoppla, ein Fehler ist aufgetreten!" würde wieder im Frontend angezeigt. 

Wie auch immer, Sie können diesen Inhalt jederzeit mit einer anderen TypoScript-Einstellung ändern:

// TypoScript Setup
config.contentObjectExceptionHandler = 1
config.contentObjectExceptionHandler.errorMessage = Oh Sorry Dear, It does not work, Contact system administrator %s

TYPO3 bietet eine benutzerdefinierte TYPO3-Fehlerbehandlung, die Sie an Ihre Bedürfnisse anpassen können, z.B. mit Ihrer TYPO3 Custom Extension.

// ext_localconf.php
$GLOBALS['TYPO3_CONF_VARS']['SYS']['errorHandler'] = \Vendor\Ext\Error\MyOwnErrorHandler::class;
$GLOBALS['TYPO3_CONF_VARS']['SYS']['debugExceptionHandler'] = \Vendor\Ext\Error\MyOwnDebugExceptionHandler::class;
$GLOBALS['TYPO3_CONF_VARS']['SYS']['productionExceptionHandler'] = \Vendor\Ext\Error\MyOwnProductionExceptionHandler::class;

Lassen Sie uns ein kurzes Beispiel für den TYPO3-Fehlerhandler geben.

// /typo3conf/ext/yourextension/Classes/Error/PostExceptionsOnTwitter.php
namespace Vendor\Ext\Error;

class PostExceptionsOnTwitter extends \TYPO3\CMS\Core\Error\DebugExceptionHandler
{
    public function echoExceptionWeb(Exception $exception)
    {
        $this->postExceptionsOnTwitter($exception);
    }

    public function postExceptionsOnTwitter($exception)
    {
        // do it ;-)
    }
}

// ext_localconf.php
$GLOBALS['TYPO3_CONF_VARS']['SYS']['debugExceptionHandler'] = \Vendor\Ext\Error\PostExceptionsOnTwitter::class;

Das ist sehr einfach! Hier ist die Konfiguration der TYPO3-Version-weisen 404-Fehlerseite.

TYPO3 <= v8

// typo3conf/LocalConfiguration.php
$TYPO3_CONF_VARS['FE']['pageNotFound_handling'] = '/index.php?id=12';
$TYPO3_CONF_VARS['FE']['pageNotFound_handling_statheader'] = 'HTTP/1.1 404 Not Found';

TYPO3 >= v9

Die Fehlerbehandlung kann auf Vor-Ort-Ebene konfiguriert werden und ist automatisch von der aktuellen Website und Sprache abhängig.

Schritt 1. Gehen Sie zu Site Management > Sites

Schritt 2. Fügen Sie Ihren Website-Eintrag hinzu/bearbeiten, klicken Sie auf die Registerkarte "Fehlerbehandlung".

Schritt 3. Wählen Sie HTTP Error Status Code = 404, How to Handle Errors = Show Content From Page, und wählen Sie Ihre erstellten 404 Seiten aus.

FehlerCode

Der zu behandelnde HTTP (Fehler)-Statuscode. Die vordefinierte Liste enthält die häufigsten Fehler, eine freie Definition anderer Fehlercodes ist ebenfalls möglich. Der spezielle Wert 0 kümmert sich um alle Fehler.

errorHandler

Definieren Sie, wie mit diesen Fehlern umzugehen ist. Vielleicht Fluid für das Rendern einer flüssigen Vorlage, eine Seite zum Abrufen von Inhalten von einer Seite oder PHP für eine benutzerdefinierte Implementierung.

Sie können auch eine PHP-basierte benutzerdefinierte 404-Fehlerbehandlung in TYPO3 konfigurieren.

Schritt 1. Konfigurieren Sie errorHandler=PHP in der Site-Verwaltung

// config.yaml
errorHandling:
  -
    errorCode: '404'
    errorHandler: PHP
    errorPhpClassFQCN: Vendor\Ext\Error\ErrorHandling

// /Classes/Error/ErrorHandling.php
<?php

namespace Ophi\Blog\Error;

use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
use TYPO3\CMS\Core\Error\PageErrorHandler\PageErrorHandlerInterface;
use TYPO3\CMS\Core\Http\HtmlResponse;
use TYPO3\CMS\Core\Http\RedirectResponse;
use TYPO3\CMS\Extbase\Utility\DebuggerUtility;
use Ophi\Blog\Service\Debug;

class ErrorHandling implements PageErrorHandlerInterface{

    public function handlePageError(ServerRequestInterface $request, string $message, array $reasons = []): ResponseInterface{
        if(Debug::isTestServer()) {
            DebuggerUtility::var_dump($message);
            DebuggerUtility::var_dump($reasons);
            return new HtmlResponse('Diese Seite liefert einen 404 Error', 404);
        }
        return new RedirectResponse('/404-fehlerseite', 404);
    }
}

Es gibt viele Ursachen für 500 interne Serverfehler, aber ein häufiger Fehler ist ein Fehler am Frontend beim Zugriff auf Ihre Site aufgrund von Apaches mod_rewrite.

# .Htacces
# mod_rewrite Enable
RewriteEngine On

# IMPORTANT: Change this path, if your TYPO3 installation is located in a subdirectory of the website root.
RewriteBase /
# or
RewriteBase /yourfolder

Gut trickreich für Anfänger, Das ist kein Fehler :) Er besagt lediglich, dass Sie Ihr TypoScript-Template nicht konfiguriert haben :)

// Try TypoScript Setup from Web > Template > Root-page
page = PAGE
page.10 = TEXT
page.10.value = Hello TYPO3!

Das Deprecation-Log ist eine praktische Funktion von TYPO3, um zu erfahren, welche Teile Ihres Setups in zukünftigen Versionen von TYPO3 nicht mehr funktionieren werden. In der aktuellen Version 9 gibt es wichtige Änderungen am Deprecation-Log und seiner Handhabung.

TYPO3 <= v8

// typo3conf/LocalConfiguration.php
$GLOBALS['TYPO3_CONF_VARS']['SYS']['enableDeprecationLog'] = ‘1’;

TYPO3 >= v9

// typo3conf/LocalConfiguration.php
$GLOBALS['TYPO3_CONF_VARS']['LOG'] => [
    'TYPO3' => [
        'CMS' => [
            'deprecations' => [
                'writerConfiguration' => [
                    \TYPO3\CMS\Core\Log\LogLevel::NOTICE => [
                        \TYPO3\CMS\Core\Log\Writer\FileWriter::class => [
                            'disabled' => true,
                        ],
                    ],
                ],
            ],
        ],
    ],
],

Aber es gibt noch ein wenig mehr. Das Verwerfungsprotokoll ist jetzt standardmäßig deaktiviert.

Um es zu aktivieren, besuchen Sie einfach die Konfigurationsvoreinstellungen im Install Tool und wählen Sie die Entwicklungsvoreinstellung, oder passen Sie Ihre LocalConfiguration.php an.

Sie müssen sicherstellen, dass Ihr SMTP-Server wie unten beschrieben korrekt konfiguriert ist.

// typo3conf/LocalConfiguration.php
'transport' => 'smtp',
'transport_smtp_server' => 'your.smtp.provider:PORT',
'transport_smtp_encrypt' => 'TLS_OR_SSL',
'transport_smtp_username' => 'USERNAME@gmail.com',
'transport_smtp_password' => 'PASSWORD',
'transport_sendmail_command' => '',
'defaultMailFromAddress' => 'USERNAME@gmail.com',
'defaultMailFromName' => 'NAME',

Manchmal kann Ihr Server eine andere Art der ImageMagick-Konfiguration haben, z.B.: Die meisten Zeitfehler sind darauf zurückzuführen, wo ImageMagick "im_path" und "img_path_lzw" installiert wurde.

Beim Debuggen von ImageMagick können Sie diese Eigenschaften von GFX berücksichtigen.

// typo3conf/LocalConfiguration.php
$TYPO3_CONF_VARS['GFX']['TTFdpi'] = '96';
$TYPO3_CONF_VARS['GFX']['gdlib_2'] = '1';
$TYPO3_CONF_VARS['GFX']['noIconProc'] = '0';
$TYPO3_CONF_VARS['GFX']['imagefile_ext'] = 'gif,jpg,jpeg,tif,bmp,pcx,tga,png,pdf,ai';
$TYPO3_CONF_VARS['GFX']['im_noScaleUp'] = '1';
$TYPO3_CONF_VARS['GFX']['enable_typo3temp_db_tracking'] = '1';
$TYPO3_CONF_VARS['GFX']['im_path'] = '/usr/bin/';
$TYPO3_CONF_VARS['GFX']['imagefile_ext'] = 'gif,jpg,jpeg,tif,bmp,pcx,tga,png,pdf,ai';
$TYPO3_CONF_VARS['GFX']['im_noScaleUp'] = '1';
$TYPO3_CONF_VARS['GFX']['png_truecolor'] = '1';
$TYPO3_CONF_VARS['GFX']['im_path_lzw'] = '/usr/bin/';
$TYPO3_CONF_VARS['GFX']['gif_compress'] = '1';
$TYPO3_CONF_VARS['GFX']['im_version_5'] = 'gm'; 
$TYPO3_CONF_VARS['SYS']['systemLocale'] = 'de_DE';

TYPO3-Anfänger sehen sich manchmal mit solchen Problemen konfrontiert, wie z.B. dem Versuch, TYPO3-Erweiterungen aus dem TER zu installieren, und verursachen plötzlich fatale Fehler, Sie werden weder auf das Backend noch auf das Frontend zugreifen können. Sie werden sich ein wenig hilflos fühlen.

Keine Sorge, Sie können dieses Problem leicht mit den unten aufgeführten Schritten lösen.

Fehlerbehebung in TYPO3 CMS 4.7.x

  • Schritt 1. Öffnen Sie typo3conf/localconf.php
  • Schritt 2. Suchen Sie $TYPO3_CONF_VARS['EXT']['extList'] und entfernen Sie den Eintrag mit dem Namen der Erweiterung am Ende der Liste. 
  • ​​​​​​​Schritt 3. Nach dem Speichern werden die Dateien, Achten Sie darauf, temp_CACHED ... zu entfernen, im Ordner /typo3conf/ gelöscht. Dann sollten die Website und das Login wieder funktionieren.

Fehlerbehebung in TYPO3 CMS 6.0

  • Schritt 1. Öffnen Sie typo3conf/LokaleKonfiguration.php
  • ​​​​​​​Schritt 2.  Hier suchen Sie nach dem Bereich 'extListArray' => array (....) und entfernen innerhalb dieses Arrays die Zeile mit dem Namen der Erweiterung und speichern die Datei.
  • ​​​​​​​Schritt 3. Ich empfehle, das typo3temp/Cache-Verzeichnis zu entfernen.

Fehlerbehebung aus TYPO3 CMS 6.2

  • Schritt 1. Öffnen Sie typo3conf/PackageStates.php.
  • ​​​​​​​Schritt 2. Suchen Sie hier nach dem Extension-Schlüssel und ändern Sie den Status auf inaktiv.
  • Schritt 3. Ich empfehle, das typo3temp/Cache-Verzeichnis zu entfernen.

Hmm, PHP-Fehler können leicht gefunden werden, Wie können wir wissen, ob etwas im TypoScript-Code falsch ist?

Die Fehlerbehebung bei TypoScript kann ein verwirrender Prozess sein, da es zahlreiche Auswirkungen wie die aktive Seite und Bedingungen gibt. Zusätzlich können Konstanten verwendet werden, die ersetzt werden. Die begleitenden Segmente liefern Daten darüber, wie man TypoScript debuggt und wie man Fehler innerhalb von TypoScript entdeckt.

Analyse der TYPO3-Konstanten

  • Schritt 1. Gehen Sie zu Web > Vorlage > TypoScript-Objekt-Browser 

  • Schritt 2. Wählen Sie "Konstante" aus dem Auswahlfeld "Durchsuchen".

Analysieren von TypoScript-Fehlern

Nun, es gibt keine Tools, mit denen sich feststellen lässt, ob der angegebene TypoScript-Code zu 100% richtig ist. Der TypoScript Object Browser wird Sie jedoch vor Syntaxfehlern warnen:

Schritt 1. Gehen Sie zu Web > Vorlage > TypoScript-Objekt-Browser 

Schritt 2. Wählen Sie "Setup" aus dem Auswahlfeld Browsers.

TypoScript-Fehler im Template-Analyzer finden

Schritt 1. Gehen Sie zu Web > Vorlage > Template Analyzer

Schritt 2. Klicken Sie auf "Vollständige TS-Liste anzeigen".

Es wird das gesamte TypoScript, das mit einer Zeilennummer eingerichtet wurde, gerendert und versucht, TypoScript-Fehler (falls vorhanden) zu beheben.

Es wird das gesamte TypoScript, das mit einer Zeilennummer eingerichtet wurde, gerendert und versucht, TypoScript-Fehler (falls vorhanden) zu beheben.

Übrigens: Im Frontend ist das Admin-Panel eine weitere Möglichkeit, TypoScript zu debuggen; benutzen Sie dessen Abschnitt "TypoScript". Er zeigt ausgewählte gerenderte (Konfigurations-)Werte, SQL-Abfragen, Fehlermeldungen und mehr.

// TypoScript Setup
config.admPanel = 1

In TYPO3 oder jeder anderen PHP-basierten Website kann plötzlich der Fehler "Erlaubte Speichergröße" auftreten,

Fataler Fehler: Erlaubte Speichergröße von 278347977 Bytes erschöpft (versucht 95 Bytes zu allozieren) in /typo3/sysext/core/Classes/Database/DatabaseConnection.php auf Zeile 1038.

In einer solchen Situation mit TYPO3 CMS - Wenden Sie sich an Ihren Server-Administrator, um die Leistung des Servers zu verbessern. Für eine schnelle Lösung können Sie es unten versuchen.

  • Gehen Sie zu Verwaltungswerkzeuge > Wartung > Cache leeren
  • Versuchen Sie, den Ordner /typo3temp/ zu entfernen
  • Gehen Sie zu Verwaltungswerkzeuge > Wartung > Temporäre Vermögenswerte entfernen
  • Legen Sie unter Admin Tools 'Benutzer' einen neuen Backend-Benutzer an und löschen Sie den alten Benutzer.
  • In LocalConfiguration.php $TYPO3_CONF_VARS['SYS']['lockingMode'] = 'deaktivieren';
  • In der Datei LocalConfiguration.php $TYPO3_CONF_VARS['SYS']['setMemoryLimit'] = '16M';

Der TYPO3-Kern reicht bereits aus, um TYPO3-Fehler zu finden und zu debuggen. Abgesehen davon habe ich einige der populären TYPO3-Erweiterungen für Fehler und Debugging recherchiert, ich hoffe, es wird Ihnen helfen.

EXT:pagenotfoundhandling Advanced Page not found handling in TYPO3

Seit TYPO3 v9 bietet der TYPO3 Core bereits eine gute Fehlerbehandlung über das Backend-Modul Site Management.

Das Team Agentur am Wasser hat eine coole TYPO3-Lösung entwickelt, die eine erweiterte Fehlerbehandlung ermöglicht. Diese Extension implementiert einen vielseitigen Error Handler für das TYPO3 CMS Site Handling.

Merkmale

  • Nahtlose Integration mit dem TYPO3 Site Handling
  • Abrufen und Anzeigen einer beliebigen TYPO3-Seite im Fehlerfall
  • Konfiguration der Anfrage, die die URL abruft
  • TYPO3-interne Sprache anpassen
  • Definieren Sie zusätzliche GET-Abfrageparameter (pro Site und pro FehlerCode)
  • Automatische Verwaltung der Authentifizierung (HTTP-Basis-Authentifizierung [RFC 2617] / TYPO3-Frontend-Benutzerauthentifizierung)
  • Datenerfassung (kann deaktiviert werden)
  • Analyse-Backend-Modul (noch experimentell)

EXT:typo3-config-handling Erweiterte TYPO3-Konfigurations handhabung

Der TYPO3-Mann hat ein "TYPO3 Config Handling"-Tool entwickelt, um das Site-Management und die Fehlerbehandlung zu verbessern.

Eines der Hauptziele ist es, mehrere config.yaml zu konfigurieren, basierend auf jeder TYPO3_CONTEXT Umgebung.

Features

  • Einstellungen abhängig von der Umgebung
  • Konfigurationsdateien in anderen Formaten
  • Konfigurationsdateien im config-Ordner gespeichert
  • Erweiterte Site-Konfiguration
  • Werte in Konfigurationsdateien verschlüsseln
  • Migrieren Ihres TYPO3-Projekts zur Verwendung von TYPO3 Config Handling
// Default layout
{
    "extra": {
        "helhum/typo3-config-handling": {
            "settings": "config/settings.yaml",
            "dev-settings": "config/dev.settings.yaml",
            "override-settings": "config/override.settings.yaml",
            "install-steps": "config/setup/install.steps.yaml"
        }
    }
}

// Another Example to match the Symfony framework
{
    "extra": {
        "helhum/typo3-config-handling": {
            "settings": "config/config_prod.yaml",
            "dev-settings": "config/config_dev.yaml"
        }
    }
}

EXT:includekrexx Let’s Debug TYPO3 Fluid Errors

Wenn Sie einen anderen Debugger ausprobieren wollen als den Standard von TYPO3, ist auch eine interessante Sache, um Fluid Template zu debuggen. Team Brainworxx hat mit kreXX einen elementreichen PHP-Debugger geschaffen, der den Backend-Zugriff auf Log-Dateien hervorhebt, Code-Building, um zu den gezeigten Qualitäten zu gelangen, und deutlich mehr.

EXT:t3Helfer TYPO3-Helfer

Partner für Extbase: Einfache und schlichte Funktionen, die Ihr TYPO3-Dasein mit Extbase und Extension-Entwicklung vereinfachen. Bitte lassen Sie mich wissen, ob Sie irgendwelche Gedanken haben oder ob Sie zufällig Fehler entdecken, ich werde das sofort beheben.

EXT:pxa_lpeh Local Page Error Handler

Beschleunigung der Fehlerseite kümmert sich um PHP-Mitarbeiter und öffnet sie, indem lokale Seiteninhalte gestapelt werden, ohne eine externe HTTP-Anfrage zu stellen.

EXT:mklog MK Protokollierung

  • Überwacht Entwicklerprotokolle. Gibt programmierte E-Mail-Benachrichtigungen bei signifikanten Fehlern aus.

EXT:fh_debug Debug generator and Devlog

Dadurch wird ein PHP-Debug-Ausgabedokument erstellt. Außerdem ist dies ein sys_log- und devLog-Datenlogger.

EXT:debug_mysql_db Debug MySQL Database

Erweitert \TYPO3\CMS\Core\Datenbank\Datenbankverbindung (ehemals t3lib_db) und \TYPO3\CMS\Core\Datenbankverbindung zur Anzeige von Fehlern und Debug-Meldungen. Nützlich zum Anzeigen und Debuggen von SQL-Abfragen. Zeigt Fehlermeldungen an, wenn sie auftreten.

EXT:js_logger JavaScript TYPO3-Logger

Diese Erweiterung protokolliert grundsätzlich alle Javascript-Fehler, die in Ihrem Frontend auftreten, mittels Ajax an das TYPO3-Backend. Dies geschieht über die PSR\Log\Logger-Schnittstelle, so dass Fehlerprotokolle konsequent an den Logger gesendet werden, der in Ihrer TYPO3-Instanz eingerichtet ist. (wie FileWriter oder SysLogWriter)

Ext: ns_t3ai

Zusätzlich zu den erwähnten TYPO3-Fehler- und Debugging-Erweiterungen sollten Sie die T3AI TYPO3 AI Erweiterung integrieren, um Ihr TYPO3-Fehler-Tracking auf das nächste Level zu bringen. T3AI bietet eine spezielle Funktion zur Anzeige von benutzerdefinierten KI-Logs und Fehlerprotokollen, die alle Ihre KI-bezogenen Aufzeichnungen effizient verwaltet. Egal, ob Sie einfache Fehler oder komplexe KI-Aufgaben verwalten, T3AI sorgt dafür, dass Sie stets die Kontrolle über Ihre TYPO3-Umgebung behalten.

EXT:zabbix_klient Zabbix TYPO3

Zabbix ist ein Open-Source-Überwachungsprogrammiertool für verschiedene IT-Elemente, darunter Systeme, Server, virtuelle Maschinen und Cloud-Verwaltungen. Kunde für das Zabbix-Überwachungstool. Sichern Sie Ihre TYPO3-Systeme und erkennen Sie Fehler und Leistungseinbußen.

Die Instantiierung von Loggern ist konfigurationsfrei, da der LogManager seine Konfiguration automatisch anwendet.

Die Logger-Konfiguration wird aus $GLOBALS['TYPO3_CONF_VARS']['LOG'] gelesen, das ein Array enthält, das den Namensraum und die Klassenhierarchie Ihres TYPO3-Projekts widerspiegelt.

Writer-Konfiguration mit FileWriter

// typo3conf/LocalConfiguration.php
$GLOBALS['TYPO3_CONF_VARS']['LOG']['writerConfiguration'] = [
    // configuration for ERROR level log entries
    \TYPO3\CMS\Core\Log\LogLevel::ERROR => [
        // add a FileWriter
        \TYPO3\CMS\Core\Log\Writer\FileWriter::class => [
            // configuration for the writer
            'logFile' => \TYPO3\CMS\Core\Core\Environment::getVarPath() . '/log/typo3_7ac500bce5.log'
        ]
    ]
];

Writer Configuration with SyslogWriter

// typo3conf/LocalConfiguration.php
$GLOBALS['TYPO3_CONF_VARS']['LOG']['Documentation']['Examples']['Controller']['writerConfiguration'] = [
    // configuration for WARNING severity, including all
    // levels with higher severity (ERROR, CRITICAL, EMERGENCY)
    \TYPO3\CMS\Core\Log\LogLevel::WARNING => [
        // add a SyslogWriter
        \TYPO3\CMS\Core\Log\Writer\SyslogWriter::class => [],
    ],
];

Schreiberkonfiguration für bestimmte Erweiterung

  • Für die Erweiterung "foo" mit dem Schlüssel "tx_foo" (ohne Verwendung von Namespaces) würde sich die Konfiguration bei befinden:

// typo3conf/LocalConfiguration.php
$GLOBALS['TYPO3_CONF_VARS']['LOG']['Tx']['Foo']['writerConfiguration'] = [
   // ...
];

Processor Configuration

// typo3conf/LocalConfiguration.php
$GLOBALS['TYPO3_CONF_VARS']['LOG']['Documentation']['Examples']['Controller']['processorConfiguration'] = [
    // configuration for ERROR level log entries
    \TYPO3\CMS\Core\Log\LogLevel::ERROR => [
        // add a MemoryUsageProcessor
        \TYPO3\CMS\Core\Log\Processor\MemoryUsageProcessor::class => [
            'formatSize' => TRUE
        ]
    ]
];

TYPO3 hat ein großartiges Logging-System im Kern eingebaut. Es gibt Ihnen endlose Möglichkeiten, System-Logging-Funktionen zu schreiben und zu erweitern.

Einen Logger für die aktuelle Klasse instanziieren

Method 1

/** @var $logger \TYPO3\CMS\Core\Log\Logger */
$this->logger = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance(\TYPO3\CMS\Core\Log\LogManager::class)->getLogger(__CLASS__);
$this->logger->info('entered function myFunction');

Method 2

declare(strict_types = 1);
namespace TYPO3\CMS\Core\Tests\Unit\Utility\Fixtures;

use Psr\Log\LoggerAwareInterface;
use Psr\Log\LoggerAwareTrait;

class GeneralUtilityMakeInstanceInjectLoggerFixture implements LoggerAwareInterface
{
    use LoggerAwareTrait;

   protected function myFunction() {
        $this->logger->info('entered function myFunction');
        $this->logger->warning('Something went awry, check your configuration!');
        $this->logger->error(
        'This was not a good idea',
            array(
                'foo' => $bar,
                'bar' => $foo,
            )
        );
        $this->logger->log(
            \TYPO3\CMS\Core\Log\LogLevel::CRITICAL,
            'This is an utter failure!'
        );
   }
}

Der Zweck eines Log-Writers ist (normalerweise) die Speicherung aller Log-Aufzeichnungen in einem persistenten Speicher, wie einer Log-Datei, einer Datenbanktabelle oder auf einem entfernten Syslog-Server.

Eingebaute Protokollschreiber

Datenbank-Autor

Der Datenbank-Schreiber meldet sich bei einer Datenbanktabelle an. Diese Tabelle muss sich in der von TYPO3 verwendeten Datenbank befinden und wird nicht automatisch erstellt.

# ext_tables.sql
CREATE TABLE tx_myextname_log (
        request_id varchar(13) DEFAULT '' NOT NULL,
        time_micro double(16,4) NOT NULL default '0.0000',
        component varchar(255) DEFAULT '' NOT NULL,
        level tinyint(1) unsigned DEFAULT '0' NOT NULL,
        message text,
        data text,
        KEY request (request_id)
);

Tipps

Sie können diese TYPO3-Erweiterung verwenden, um Protokolle einzusehen.

FileWriter
Der Dateischreiber loggt sich in eine Protokolldatei ein, ein Protokollsatz pro Zeile. Wenn die Protokolldatei nicht existiert, wird sie erstellt (einschließlich übergeordneter Verzeichnisse, falls erforderlich).

PhpErrorLogWriter
Loggt sich mit error_log() in das PHP-Fehlerprotokoll ein

SyslogAutor
Loggt sich in das Syslog ein (nur Unix).

Ich werde einen separaten Blog über TYPO3-Debug schreiben. Für den Moment wollen wir uns einen kurzen Überblick verschaffen.

Wenn Sie PHP verwenden oder ein PHP "adoptieren", müssen Sie wissen, wie man PHP debuggt. Lernen Sie weiter und verbessern Sie Ihre Fehlerbehandlungs- und Debugging-Fähigkeiten in PHP & TYPO3.

  • Werte ausgeben
  • Variablen nach stdout ausgeben
  • Umschalten der Fehlerberichtsebene
  • Überwachung von Fehlerprotokollen
  • Schrittweise durch den Code

Der TYPO3 Core bietet ein einfaches Debug() (definiert in EXT:core/Classes/Core/GlobalDebugFunctions.php).

Er umschließt \TYPO3\CMS\Core\Utility\DebugUtility::debug()

debug($solr);

Fehlersuche mit Xdebug


Die Verwendung von Debuggern in anderen Programmiersprachen ist Standard, während sie in PHP einzigartig ist: Die meisten PHP-Designer halten die Fehlerbehebung mit z.B. echo und var_dump im Quellcode aufrecht, um die Routine zu verstehen. Trotz der Tatsache, dass es nützlich ist, einen echten Debugger zu verwenden, um Fehler zu verstehen, da man den Quellcode Stück für Stück erfahren und auf innere Variablen schauen kann.

// Install Xdebug for TYPO3
sudo app-get install xdebug

// php.ini
zend_extension="/usr/local/php/modules/xdebug.so"

// php.ini
xdebug.remote_enable=on
xdebug.remote_handler=dbgp
xdebug.remote_host=localhost
xdebug.remote_port=9000

Xdebug-Browser-Plugin installieren

Installieren Sie das Plugin "Xdebug Helper" für Ihren Browser. Um das Debugging zu starten, klicken Sie auf das Fehlersymbol und wählen Sie "Debug".

Installieren Sie Xdebug in Ihre bevorzugte PHP-IDE

Ich empfehle dringend, Xdebug in Ihren bevorzugten PHP-Editor wie VS, PHPStorm, Sublime, etc. zu installieren. Üben Sie weiter und verbessern Sie Ihre Debugging-Fähigkeiten, um eine bessere Qualität und produktive Arbeit mit TYPO3 zu erhalten.

Danke für die Lektüre!

Ich habe mich bemüht, alle Themen rund um "TYPO3-Fehler" zu behandeln. Ich hoffe, Sie finden es nützlich. Lassen Sie uns wichtige Themen kurz rekapitulieren.

  • Lernen Sie die Grundlagen von TYPO3-Fehlern, wie z.B. TYPO3-Anzeigefehler aktivieren, grundlegende bis fortgeschrittene Konfiguration von TYPO3-Fehlern, etc,
  • Untersuchen Sie weiterhin das Systemfehlerprotokoll, um zu verstehen, was, wo und wie TYPO3-Fehler in das System eingeloggt werden.
  • Gewöhnen Sie sich an einige häufige TYPO3-Fehler, wie z.B. Oops-Fehler, 404-Fehler, 500-Server-Fehler, etc,
  • alle erwähnten kostenlosen TYPO3-Fehler-Erweiterungen zu erforschen, zu installieren und zu konfigurieren, was immer Sie für Ihre TYPO3-Site für nützlich halten.
  • Wenn Sie ein TYPO3 Extension-Entwickler sind, dann verbessern Sie die Fehler- und Debugging-Fähigkeiten auf fortgeschrittenem Niveau, um Ihre Zeit zu sparen.

Kennen Sie fehlende TYPO3-Fehlertipps oder Techniken? Benötigen Sie Hilfe bei der Behebung von TYPO3-Fehlern? Zögern Sie nicht, in das Kommentarfeld zu schreiben.

Haben Sie eine friedliche TYPO3-Fehlerbehandlung :)

Do you need help to enhance your speed & performance?

  • Upto 90+ Google Page Speed Score
  • Advanced TYPO3 Speed Audit Report
  • 10 Support hours
TYPO3 Performance GIG
Performance

Post a Comment

×
Captcha Code Kann das Bild nicht gelesen werden? Klicken Sie hier, um zu aktualisieren
  • user
    Tobias Gülzow 2020-08-28 um 2:18 pm
    Hi everyone.

    Thanks for recommending our little extension includekrexx.
    I really appreciate this.

    Sadly, I think there is a small little mistake in your article.
    The fluid part of the debugger was not written by Nitsan, it was written by Brainworxx.

    Tobi
    • user
      Sanjay Chauhan 2020-08-28 um 4:36 pm
      Hey Tobi,

      Thanks for your feedback and appreciation. Aha, that was our typo mistake which is just corrected now ;) Thanks to you guys for the contribution of your lovely TYPO3 extension, TYPO3 Community appreciate your efforts, Keep it up!

      Cheers,
      Sanjay
  • user
    Kristin Abend 2020-07-10 um 2:44 pm
    Oh nice, I just started building my TYPO3 Website and that would obviously call for lot of errors haha. I hope this blog could be useful to find the solutions to the errors i face while building my website
    • user
      Sanjay 2020-07-10 um 3:00 pm
      Dear Kristin Abend, Thanks for your kind words and appreciation. I'm happy you liked our TYPO3 blog.