Contao und warum ich es nicht mag

Ich hatte in der Vergangenheit mehrmals versucht, mich mit Contao anzufreunden. Die Version 3 ließ sich sehr leicht installieren; das Bedienkonzept hingegen hat mir noch nie gefallen, aber ich wollte irgendwann doch mal wieder dieses CMS anpacken – das war im Jahr 2017. Ich hatte damals einen Blog­artikel angefangen, aber nie zu Ende geschrieben. Aktuell war Contao zu der Zeit in der Version 4.4.8, und die vorherigen Vierer-Versionen kannte ich gar nicht. Aufgefallen war mir, dass Contao 4 offensichtlich völlig neu programmiert worden war – es setzte nun auf das Symphony-Framework auf, und die Verzeichnisstruktur war gänzlich anders als in Contao 3.

Vivaldi zeigte Bludit-Seiten verkleinert an

Logo Vivaldi

In Vivaldi erlebte ich es immer wieder, dass Bludit in einer verkleinerten Ansicht dargestellt wurde, und zwar insbesondere dann, wenn man sich per Permalink von der Blogseite, welche die aktuellen Artikel auflistet, auf einen Einzelartikel weiter durch klickte. Manchmal wurde auf die normale Ansicht mit 100 % Vergrößerungsstufe umgesprungen, manchmal aber auch nicht, und ich musste STRG + 0 drücken, um die normale Stufe zurückzuerhalten. Ich habe gesucht und gesucht, um den Fehler zu finden, und mir fiel auf, dass das Phänomen nur in Vivaldi auftrat – nicht in Firefox, nicht in Opera und auch nicht in Chromium. Das fand ich ganz seltsam.

Lösung: concrete5 in Version 8 unter PHP 7

Im vorigen Artikel, Concrete5 in Version 8.x läuft nicht unter PHP 7, hatte ich beschrieben, dass ich bei einem bestimmten Webhoster concrete5 in den aktuellen Achter-Versionen unter PHP 7 nicht ans Laufen kriege. Nach Inanspruchnahme des Supports von Webhoster.de AG fiel bei mir endlich der Groschen, sodass ich heute die Lösung präsentieren kann:

Im Plesk-Backend hat man die Möglichkeit, bestimmte PHP-Einstellungen zu verändern. Wichtig im Falle des im vorigen Artikel beschriebenen Problems ist die Einstellung session.save_path. Läuft die Website unter concrete5 8 und PHP 7, muss hier stehen: {WEBSPACEROOT}{/}{:}{TMP}{/}

Concrete5, Version 8, session.save_path

Unter concrete5 6 und PHP 5 muss hingegen eingetragen sein: /var/lib/php/session

Concrete5, Version 6, session.save_path

Bei anderen Webhostern gibt es möglicherweise andere Lösungswege, vielleicht wird als Backend etwas anderes als Plesk eingesetzt, und oft kann man als Kunde auch gar nichts an den PHP-Einstellungen ändern. Dann muss man Kontakt zum Support aufnehmen.

Zu bemerken wäre noch, dass nach meinen Erfahrungen concrete5 6 nicht mit PHP 7 läuft, sondern nur mit PHP 5; concrete5 7 hingegen müsste mit PHP 7 laufen. Allerdings sollte man am besten auf den aktuellen Zweig 8 von concrete5 umstellen – dies ist die fortschrittlichste und leistungsfähigste Version und wird ständig weiterentwickelt.

Concrete5 in Version 8.x läuft nicht unter PHP 7

Nachtrag 1: Inzwischen habe ich eine Lösung gefunden, die ich im Artikel Lösung: concrete5 in Version 8 unter PHP 7 vorstelle.

Nachtrag 2: Im Kommentar hat jemand von concrete5.de eine Lösung vorgeschlagen, die meiner oben erwähnten ähnelt:

Den Session Handler in die Datenbank zu packen, ist keine gute Idee, dies würde die Datenbank unnötig belasten.
Die Fehlermeldung haben wir oft bei Servern erlebt, die PLESK nutzen. Da /var/lib/php/session direkt unter dem Root-Verzeichnis des Servers abzulegen ist, ist es, wegen Schreibrechte, unmöglich dort die Sessions abzulegen. Man kann entweder die Schreibrechte des Ordners session ändern, oder einfacher, die Sessions woanders speichern. Beispiel: var/lib/php/session ohne Anfangs-Slash, dann wären die Sessions im relativen Pfad.


Wahrscheinlich hängt es vom Webhoster und dessen Einstellungen ab, aber bei einem bestimmten Hoster kriegte ich concrete5 in den aktuellen Versionen 8.x und unter PHP 7.x nicht ans Laufen. Es erschien beim Installationsversuch die Fehlermeldung:
is_dir(): open_basedir restriction in effect. File(/var/lib/php/session) is not within the allowed path(s): (/var/www/vhosts/[…]/:/tmp/).

Nun existiert zwar eine Lösung hierfür. Bei der Installation gibt man an, dass die Sessions nicht in Dateien, sondern in der Datenbank gespeichert werden sollen:


Concrete 5 Version 8, Session-Handler Datenbank

(Aufs Bild klicken zum Vergrößern)

Zusätzlich erstellt man eine Datei namens concrete.php, schreibt dort das Folgende hinein und lädt sie nach /application/config hoch:

<?php
return array(
    'session' => array(
    'handler' => 'database'
    )
);

Doch das half in einem meiner Fälle auch nicht; concrete5 ließ sich einfach nicht installieren, sondern erst dann, als ich auf die ältere PHP-Version 5.6.32 umgeschaltet hatte.

Es war auch schon einmal vorgekommen, dass mit den oben genannten Workarounds concrete5 sich zwar nicht in ein Unterverzeichnis und auch nicht in eine Subdomain installieren ließ, jedoch in den Hauptbereich. Warum mal dieses, mal jenes und mal gar nichts funktioniert, noch zumal bei demselben Webhoster, will sich mir einfach nicht erschließen. Ich erkenne kein Muster. Und nach mehrmaligen stundenlangen Fummeleien schwindet natürlich auch so langsam meine Begeisterung für dieses CMS.

Concrete5, Version 8: Absenderadresse des Kontaktformulars

Im Jahr 2012 schrieb ich in meinem Artikel concrete5: Absender im Kontaktformular (2), dass standardmäßig die Absenderadresse des Kontaktformulars von concrete5 diejenige des Superadministrators ist. Der dürfte in vielen Fällen ein Webdesign-Dienstleister sein. Natürlich soll der Absender die E-Mail-Adresse des Kunden, nicht die des Dienstleisters sein – also die Adresse des Website-Inhabers. Mein damaliger Lösungsvorschlag hatte sich auf die concrete5-Version 5.6 bezogen. In den aktuellen Achter-Versionen muss man ein wenig anders vorgehen. Hier die Lösung für concrete5 in der Version 8:

Es muss eine PHP-Datei im Ordner application/config erstellt werden mit dem Dateinamen concrete.php, und diese muss folgenden Code beinhalten:

<?php
    return array(
	'email' => array(
	    // The system default sender (Group A)
	    'default' => array(
            'address' => 'info@domain.de',
            'name' => 'Unternehmensname', // this can be left out
        ),
        // The individual senders (Group B)
        // Form block:
        'form_block' => array(
            'address' => 'info@domain.de',
        ),
        // User registration email validation messages
        'validate_registration' => array(
            'address' => 'info@domain.de',
            'name' => 'Unternehmensname', // this can be left out
        ),
        // Forgot password messages
        'forgot_password' => array(
            'address' => 'info@domain.de',
        ),
    ),
);

Die Beispiel-Daten, info@domain.de und Unternehmensname, müssen natürlich durch die echten Daten ersetzt werden. Die Datei kann bei Bedarf weitere Einträge für andere Konfigurationszwecke beinhalten.

Pagekit: Meta-Beschreibung nachrüsten

Bei der Analyse einer bestimmten Website mit Seitwert stellte sich heraus, dass die Meta-Beschreibung (description) fehlte, die relevant für Suchmaschinen ist. Die Website wird mit dem CMS Pagekit betrieben, und seltsamerweise fügt dieses CMS zwar die Beschreibungen, die man im Backend eingibt, als og:description in den Quellcode ein (das Open-Graph-Protokoll ist von Bedeutung für soziale Medien), aber eben nicht als herkömmliche Meta-Beschreibung.

Dieses Manko kann man durch das Plugin Metadesc beheben, das es erst seit März 2017 gibt – es ist also zu dem Zeitpunkt, da ich diesen Blogartikel schreibe, noch sehr neu. Ich habe es erst heute entdeckt und gleich eingebaut – und es funktioniert wunderbärchen.

concrete5: Nicht die Willkommens-Seite nach dem Einloggen anzeigen

Standardmäßig ist das Web-CMS concrete5 so eingestellt, dass der Benutzer nach dem Einloggen ins System auf einer Art Willkommens-Seite landet, dem sogenannten Schreibtisch. Dort erhält man allerlei Informationen rund um concrete5, zum Beispiel, was es für Sonderangebote gibt, welche Erweiterungen gerade im Fokus stehen oder welche Tutorien aktuell angeboten werden.

Willkommen zurück
(Aufs Bild klicken zum Vergrößern)

Wen das alles nervt, der kann concrete5 in der Version 8 sehr einfach so einstellen, dass man auf der Startseite landet oder einer beliebigen anderen (in früheren Versionen musste man eine Konfigurationsdatei ändern). Dazu meldet man sich am System an und navigiert zu System & Einstellungen > Anmeldung & Registrierung > Weiterleitung nach der Anmeldung. Und dort kann man dann eine von drei Möglichkeiten auswählen.

Weiterleitung nach der Anmeldung

Wie gesagt, voreingestellt ist Schreibtisch, und ich stelle gewöhnlich um auf Startseite. Dann sieht man die Startseite des Webauftritts vor sich, da das Dashboard in concrete5 ja kein abstraktes Backend ist, sondern man immer die Seiten in der »echten« Ansicht vor sich sieht.

Benutzer weiterleiten zu

Gefunden habe ich diese Lösung im Forum von concrete5.

concrete5: RSS-Feed eigener Inhalte einrichten

Mit dem CMS concrete5 lassen sich die unterschiedlichsten Webauftritte realisieren. Es bietet auch die Möglichkeit, ein Blog oder einen News-Bereich einzurichten – allerdings ist das meiner Ansicht nach in concrete5 nicht wirklich elegant gelöst und intuitiv genug. Es gibt Add-ons für diesen Zweck, aber auch mit Bordmitteln kriegt man es hin. Gewöhnlich bietet man mit einem Blog oder Neuigkeiten-Bereich auch einen RSS-Feed an, sodass Interessierte anonym die aktuellen Nachrichten abonnieren können. Wie man so einen Feed in concrete5 einrichtet, darum geht es in diesem Beitrag.

Kurz ein paar Sätze zur Erklärung: Ein Weblog ist in aller Regel so strukturiert, dass jeder Artikel eine eigene Seite ist und die Blog-Startseite eine bestimmbare Anzahl aktueller Artikel auflistet. Ein Umwandler ruft nun diese HTML-Seiten auf und baut sie in ein XML-Format um, wodurch die Daten so aufbereitet werden, dass Feed-Leseprogramme die Struktur erkennen und die Inhalte darstellen können. Das Design der Webseite ist in der XML-Datei nicht enthalten, und jeder Feed-Reader gestaltet die Artikel etwas unterschiedlich.

Doch jetzt zur Sache, Schätzchen! Wie setzen wir so etwas in concrete5 um? Nun, wir erstellen erst einmal eine Seite, die als Blog-Startseite dienen soll. Zu dieser Seite können wir schon einmal eine oder zwei Unterseiten als Dummys erstellen und ein bisschen Beispieltext hinein schreiben. Auf die Blog-Startseite kommt nun ein Seitenliste-Block, der die Unterseiten auflisten soll. Es sind etliche Einstellungen vorzunehmen; wichtig in diesem Zusammenhang hier ist, dass bei RSS-Feed anzeigen die Wahlmöglichkeit Ja ausgewählt wird.

Seitenliste-Block: RSS-Feed anzeigen

Nachdem die Seitenliste fertig eingerichtet worden ist, zeigt sich das RSS-Symbol neben der eigentlichen Liste. Benutzer können nun den Feed in ihrem Feed-Reader abonnieren.

Seitenliste-Block: RSS-Symbol

Siehe auch: concrete5-Forum

Kanboard: There is no suitable CSPRNG installed on your system

Kanboard ist eine Projektverwaltungs-Software, die sich am Kanban-Prinzip orientiert. Sie ist Open Source und lässt sich auf dem eigenen Webserver installieren; ein Standard-Hosting-Paket mit PHP und MySQL/MariaDB, PostgreSQL oder SQLite 3 reicht aus.

Nach dem Update von einer ziemlich alten auf eine neue Version wurde meine Kanboard-Installation nicht mehr angezeigt. Statt dessen war die Fehlermeldung zu lesen: There is no suitable CSPRNG installed on your system. Bei meinen Recherchen fand ich heraus, dass es mit den Pfad-Einstellungen zu temporären Dateien oder mit der open_basedir-Restriktion zu tun haben könnte – beides PHP-Konfigurationen. Aber entsprechende Änderungen an den Einstellungen über die Verwaltungsoberfläche meines Webhosters halfen nicht.

Was man tun kann, wird in den FAQ von Kanboard erläutert. Darauf stieß ich, als ich die Dokumentation von Kanboard durchsuchte. Eine der Möglichkeiten besteht darin, die Domain oder Subdomain von PHP 5 auf PHP 7 umzustellen. Und das war die Maßnahme, die bei mir auch funktionierte.


Torsten Kelsch